如何验证我分配给组合框的字典值是我认为的值?
How can I verify the Dictionary values I've assigned to a combobox are what I think they are?
我有这段代码可以将字典分配给组合框:
Dictionary<String, String> dict = ReportRunnerConstsAndUtils.GetReportGeneratorsDictionary();
comboBoxReportRunners.DataSource = new BindingSource(dict, null);
comboBoxReportRunners.DisplayMember = "Key";
comboBoxReportRunners.ValueMember = "Value";
我想验证项目的 DisplayMembers 和 ValueMembers 是否符合我的预期。这似乎是一种合乎逻辑的测试方法:
foreach (var v in comboBoxReportRunners.Items)
{
MessageBox.Show(v.DisplayMember.ToString());
MessageBox.Show(v.ValueMember.ToString());
}
...但无法编译;我得到,“'object' 不包含 'DisplayMember' 的定义并且没有扩展方法 'DisplayMember' 接受类型 'object' 的第一个参数可以找到(是您缺少 using 指令或程序集引用?)'" 和 'ValueMember'
的相同错误信息
我需要查看(仅一次)哪些值存储为每个项目的 DisplayMember 和 ValueMember?
尝试这种方式:
foreach (KeyValuePair<string,string> v in comboBoxReportRunners.Items)
{
MessageBox.Show(v.Key.ToString());
MessageBox.Show(v.Value.ToString());
}
字典使用KeyValuePair存储数据
DisplayMember
和 ValueMember
是组合框的属性,而不是其中包含的项目的属性。如错误所述,组合框中的项目属于 Object
类型,因此如果您想要访问它们的属性,您必须先进行强制转换。你的数据源是 Dictionary<String, String>
类型,它是 KeyValuePair<string,string>
的集合,所以在 foreach
循环中你必须使用这种类型(有两种可能的方式):
foreach (KeyValuePair<string,string> v in comboBoxReportRunners.Items)
{
MessageBox.Show(v.Key.ToString());
MessageBox.Show(v.Value.ToString());
}
或
foreach (var v in comboBoxReportRunners.Items)
{
KeyValuePair<string,string> val = v as KeyValuePair<string,string>;
MessageBox.Show(val.Key.ToString());
MessageBox.Show(val.Value.ToString());
}
我有这段代码可以将字典分配给组合框:
Dictionary<String, String> dict = ReportRunnerConstsAndUtils.GetReportGeneratorsDictionary();
comboBoxReportRunners.DataSource = new BindingSource(dict, null);
comboBoxReportRunners.DisplayMember = "Key";
comboBoxReportRunners.ValueMember = "Value";
我想验证项目的 DisplayMembers 和 ValueMembers 是否符合我的预期。这似乎是一种合乎逻辑的测试方法:
foreach (var v in comboBoxReportRunners.Items)
{
MessageBox.Show(v.DisplayMember.ToString());
MessageBox.Show(v.ValueMember.ToString());
}
...但无法编译;我得到,“'object' 不包含 'DisplayMember' 的定义并且没有扩展方法 'DisplayMember' 接受类型 'object' 的第一个参数可以找到(是您缺少 using 指令或程序集引用?)'" 和 'ValueMember'
的相同错误信息我需要查看(仅一次)哪些值存储为每个项目的 DisplayMember 和 ValueMember?
尝试这种方式:
foreach (KeyValuePair<string,string> v in comboBoxReportRunners.Items)
{
MessageBox.Show(v.Key.ToString());
MessageBox.Show(v.Value.ToString());
}
字典使用KeyValuePair存储数据
DisplayMember
和 ValueMember
是组合框的属性,而不是其中包含的项目的属性。如错误所述,组合框中的项目属于 Object
类型,因此如果您想要访问它们的属性,您必须先进行强制转换。你的数据源是 Dictionary<String, String>
类型,它是 KeyValuePair<string,string>
的集合,所以在 foreach
循环中你必须使用这种类型(有两种可能的方式):
foreach (KeyValuePair<string,string> v in comboBoxReportRunners.Items)
{
MessageBox.Show(v.Key.ToString());
MessageBox.Show(v.Value.ToString());
}
或
foreach (var v in comboBoxReportRunners.Items)
{
KeyValuePair<string,string> val = v as KeyValuePair<string,string>;
MessageBox.Show(val.Key.ToString());
MessageBox.Show(val.Value.ToString());
}