【发布时间】:2016-11-28 06:36:47
【问题描述】:
我已尝试以下代码将组合框的选定值获取到文本框,但它给了我以下错误
错误:对象引用未设置为对象的实例。
代码
private void frmpaymentsearch_Load(object sender, EventArgs e)
{
txtcomvalue.Text = "PaymentVoucherCode";
dllby.DisplayMember = "Text";
dllby.ValueMember = "Value";
dllby.Items.Add(new { Text = "P.Voucher Code", Value = "PaymentVoucherCode" });
dllby.Items.Add(new { Text = "Vendor", Value = "VendorName" });
dllby.SelectedIndex = 0;
}
private void dllby_SelectedIndexChanged(object sender, EventArgs e)
{
txtcomvalue.Text = dllby.SelectedValue.ToString();
}
【问题讨论】:
-
如果您不使用
DataSource来表示ComboBox,它会为SelectedValue返回null。 -
作为一个通用的解决方案,你可以依赖
GetItemValue扩展方法。它以ValueMember的方式提取项目的值:var value = comboBox1.GetItemValue(comboBox1.SelectedItem).ToString();。ComboBox和ListBox有一个GetItemText用于获取文本,但它们缺少GetItemValue。链接的帖子共享了一个扩展方法来解决这个问题。