我有一个列表框,其中有一系列从数据库中检索到的案例。当我创建一个新案例时,我不想更新列表框以反射(reflect)数据库中案例表的实际状态。但是当我尝试更新它时,我从该行的事件处理程序中得到了一个 NullReferenceException:populateBoxes((int)lb.SelectedValue)
。
这是我在列表框上的事件处理程序:
private void lbCases_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox lb = (ListBox)sender;
populateBoxes((int)lb.SelectedValue);
}
更新事件:
private void button1_Click(object sender, EventArgs e)
{
this.casesTableAdapter.Fill(this.caseDB.cases);
}
我使用了VSE2008的内置功能来设置列表框的数据源、显示成员和值成员。
最佳答案
您必须确保在设置数据源时 lbCases_SelectedIndexChanged 不会触发或忽略该事件。
要么创建一个“正在加载” bool 值来忽略该事件,要么将索引设置为 -1 并在 lbCases_SelectedIndexChanged 中添加对 -1 索引值的检查以防止出现异常。
关于c# - 刷新其中的数据时,是否必须从列表框中删除 selectedIndexChange 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079384/