我试图检索comboBox中存在的所有项目的显示值.
第一种情况:如果使用DataSource填充了comboBox:
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已经填充了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
}
现在我希望能够在不知道用于填充comboBox的方案的情况下检索所有值.因此,我不知道是否必须使用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();
}
}