【发布时间】:2015-10-17 05:24:18
【问题描述】:
很抱歉,如果它有一些明显的解决方案,但我试图解决它几个小时但找不到解决方案。
我在我的WindowsFormsApplication 中使用了几个ComboBoxes 来将ids 与names 关联起来。问题是当用户从组合框列表中选择一个项目时,它可以正常工作,但是当他键入一个项目时,组合框的SelectedValue 属性是@ 987654326@.
为了模拟这个问题,我用一个按钮和一个组合框创建了一个 from。
在我的实际应用程序中,我使用 sqlserver 数据库中的表中的数据填充组合框,但为简单起见,这里我使用 list 填充它:
public Form1()
{
InitializeComponent();
List<KeyValuePair<short,short>> l = new List<KeyValuePair<short,short>>();
l.Add(new KeyValuePair<short,short>(1,10));
l.Add(new KeyValuePair<short,short>(2,20));
l.Add(new KeyValuePair<short,short>(3,30));
this.comboBox1.DataSource = l;
this.comboBox1.DisplayMember = "Value";
this.comboBox1.ValueMember = "Key";
}
private void button1_Click(object sender, EventArgs e)
{
if (this.comboBox1.SelectedValue == null)
MessageBox.Show("NULL");
else
MessageBox.Show(this.comboBox1.SelectedValue.ToString());
}
例如,当用户从列表中选择第二个项目 (20) 并单击按钮时,消息框按预期显示 2,但如果他键入数字 20 进入组合框,SelectedValue 是null。
这个问题可以通过改变组合框的样式来解决:
this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
但它会阻止用户输入组合框,所以我不得不使用默认的ComboBoxStyle.DropDown。
【问题讨论】:
标签: c# combobox null selectedvalue