检索组合框显示的值
本文关键字:显示 组合 检索 | 更新日期: 2023-09-27 18:10:01
我试图检索comboBox
中存在的所有项目的显示值。
第一个大小写:如果comboBox已使用DataSource
填充:
comboBox.DataSource = myDataSet.Tables[0];
comboBox.DisplayMember = "value";
comboBox.ValueMember = "id";
…我使用以下代码:
foreach (DataRowView rowView in comboBox.Items) {
String value = rowView.Row.ItemArray[1].ToString();
// 1 corresponds to the displayed members
// Do something with value
}
第二种情况:如果组合框已经填充了comboBox.Items.Add("blah blah")
,我使用相同的代码,除了我必须查看ItemArray
的第一个维度:
foreach (DataRowView rowView in comboBox.Items) {
String value = rowView.Row.ItemArray[0].ToString();
// 0 corresponds to the displayed members
// Do something with value
}
现在我希望能够检索所有值,而不知道用于填充组合框的方案。因此,我不知道我是否必须使用ItemArray[0]
或ItemArray[1]
。这可能吗?我怎么能这么做呢?
您可以尝试这样做:
string displayedText;
DataRowView drw = null;
foreach (var item in comboBox1.Items)
{
drw = item as DataRowView;
displayedText = null;
if (drw != null)
{
displayedText = drw[comboBox1.DisplayMember].ToString();
}
else if (item is string)
{
displayedText = item.ToString();
}
}
在第一种情况下,Combobox
将使用DataSource
属性填充。因此它的DataSource
不会为空。在第二种情况下,它将为空。因此,您可以使用(comboBox1.DataSource==null)
执行if-else,然后相应地使用ItemArray[0]
或ItemArray[1]
。
Leito,您可以检查DataSource是否是DataTable,以确定采取哪种操作。
if (comboBox.DataSource is DataTable)
{
// do something with ItemArray[1]
}
else
{
// do something with ItemArray[0]
}