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

标签 c# .net database winforms events

我有一个列表框,其中有一系列从数据库中检索到的案例。当我创建一个新案例时,我不想更新列表框以反射(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/

相关文章:

c# - Document.Ready() 在 PostBack 后不工作

.net - 二进制序列化命名空间更改

mysql - 调整 MySQL 数据库

mysql - 匹配没有结果

python - psycopg2 只显示 Postgresql 数据库的第一行

c# - 在 Dynamics CRM 中加入约会实体所需的参加者和联系人实体

C# 使用 interopExcel 获取仅有效范围的列数和行数

c# - CoreScanner(Motorola)事件未触发C#

c# - WP7 如何在设备上调试飞行模式?

.net - MSBuild 使用错误版本的 sgen.exe 生成 XmlSerializer dll?