c# - 组合框自动完成 SelectedValue 返回 NullReferenceException
问题描述
我在系统中有组合框,它的下拉样式设置简单,也可以自动完成。当我在输入记录的前几个字母后选择值时,系统会抛出 NullReferenceException。
我已将组合框与数据库绑定,并将 DisplayMember 设置为 Name 并将 Value Member 设置为 ID。当我在组合框 keydown 事件上按回车键时,我想选择产品并在消息中显示它的 ID,但它不起作用
private void FillCombobox()
{
DataTable dt = new DataTable();
try
{
// Set the connection string in the Solutions Explorer/Properties/Settings object (double-click)
using (EmpireDbContext dbcontext = new EmpireDbContext())
{
var query = from c in dbcontext.Inventory
orderby c.ProductName
select new
{
c.ProductCode,
c.ProductName
};
if (query == null)
{
throw new ArgumentNullException();
}
dt.Columns.Add(
new DataColumn()
{
DataType = System.Type.GetType("System.String"),//or other type
ColumnName = "Name",
}
);
dt.Columns.Add(
new DataColumn()
{
DataType = System.Type.GetType("System.Int32"),
ColumnName = "ID",
}
);
foreach (var element in query)
{
var row = dt.NewRow();
row["Name"] = element.ProductName;
row["ID"] = element.ProductCode;
dt.Rows.Add(row);
}
}
}
catch (Exception ex)
{
throw ex;
}
combo_searchName.DataSource = dt;
combo_searchName.ValueMember = "ID";
combo_searchName.DisplayMember = "Name";
}
组合框 Keydown 事件
if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
{
MessageBox.Show(combo_searchName.SelectedValue.ToString());
}
解决方案
首先检查数据表的数据。如果数据表中没有可用数据。然后它会抛出异常。
推荐阅读
- java - 在 .jar 中读取资源文件时遇到问题
- php - PHP - 从分页的 API 结果中收集数据(在 XML 中)
- angular - 角度导航和验证 - 带参数的路线
- javascript - Pixi.js:如何检测电影结束(结束事件的回调?)
- qt - 没有 -lstdc++ 的 ld 找不到 doctest
- ag - 如何在 MAC 中使用 ag 区分大小写进行搜索?
- python - Python Tkinter 网格未按要求设置
- reactjs - 反应 useEffect 挂钩注册回调并访问状态
- html - Vim 和 NeoVim 无法检测 Django HTML 文件类型
- google-chrome-extension - Chrome 在哪里存储开发模式下的扩展数据?