C# 刷新列表框中的数据时,是否必须从列表框中删除selectedIndexChange事件?

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) {

我有一个列表框,其中包含从数据库检索的一系列案例。创建新案例时,我不想更新列表框以反映数据库中案例表的实际状态。但是我从这一行的事件处理程序中得到一个NullReferenceException:
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中会发生什么?