C# 刷新列表框中的数据时,是否必须从列表框中删除selectedIndexChange事件?
我有一个列表框,其中包含从数据库检索的一系列案例。创建新案例时,我不想更新列表框以反映数据库中案例表的实际状态。但是我从这一行的事件处理程序中得到一个NullReferenceException:C# 刷新列表框中的数据时,是否必须从列表框中删除selectedIndexChange事件?,c#,.net,database,winforms,events,C#,.net,Database,Winforms,Events,我有一个列表框,其中包含从数据库检索的一系列案例。创建新案例时,我不想更新列表框以反映数据库中案例表的实际状态。但是我从这一行的事件处理程序中得到一个NullReferenceException:PopulateBox((int)lb.SelectedValue)当我尝试更新它时 这是我在列表框上的事件处理程序: private void lbCases_SelectedIndexChanged(object sender, EventArgs e) {
PopulateBox((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的内置功能来设置列表框的datasource、displaymember和valuemember。将selectedindex设置为-1,然后填充列表框。我建议您在该事件处理程序中进行检查:
private void lbCases_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox lb = sender as ListBox;
if(lb == null)
return;
populateBoxes((int)lb.SelectedValue);
}
您必须确保在设置数据源时,lbCases\u SelectedIndexChanged不会触发或忽略事件
创建一个“加载”布尔值以忽略事件,或者将索引设置为-1,并在lbCases\u SelectedIndexChanged中添加一个检查,以防止出现异常。运行
if (lb.SelectedValue != null)
{
populateBoxes((int)lb.SelectedValue);
}
此外,如果希望以选定值结束,则必须在调用以下命令后选择该值:
this.casesTableAdapter.Fill(this.caseDB.cases);
@丹尼尔-显然列表框不是空的,因为我仍然得到相同的异常。异常的确切堆栈跟踪是什么?>caseHandler.exe!CaseMhandler.caseControl.lbCases_SelectedIndexChanged(对象发送者={SelectedItem=”“},System.EventArgs e={System.EventArgs})第93行C#@Daniel-哎哟。。我以为是的。那么什么是堆栈跟踪?例如,exception.ToString()的结果包含堆栈跟踪。在populateBox中会发生什么?