实践发现:以SelectedIndex赋值让ComboBox自动选中时能获得SelectedValue;以SelectedText赋值让ComboBox自动选中时获得SelectedValue为空。
即
this.comboBox1.SelectedIndex = this.comboBox1.FindString(room);
这样能获得comboBox1.SelectedValue值。
this.comboBox1.SelectedText = room;
这样获得comboBox1.SelectedValue值为空。
下面为转帖内容:
最近在项目中处理一个winForm中设定ComboBox值,奇怪的是用一个对象匹配ComboBox的Datasource集合的一个对象时,设置SelectedValue时,竟然得到SelectedValue为null。
网上搜索一下,有说是如果用DateSet绑定时,SelectedValue得到的是null或DataRowView。
后来反复实践,发现可以用以下方法实现:
private void SetValueByItem()
{
Area a = new Area();
a.Area_ID = "8";
a.Area_Name = "第8名";
cbList.SelectedItem = ac.FindAll(delegate(Area ar) { return ar.Area_ID == a.Area_ID; })[0];
lbResult.Text = cbList.SelectedItem.GetType().ToString() + ":" + cbList.SelectedValue.ToString();
}
其他两种设置方式:
private void SetValueByValue()
{
Area a = new Area();
a.Area_ID = "8";
a.Area_Name = "第8名";
cbList.SelectedValue = a.Area_ID;
lbResult.Text = cbList.SelectedValue.GetType().ToString() + ":" + cbList.SelectedValue.ToString();
}
完整代码: