调用checkedListBox_ItemCheck后出现NullReferenceException

时间:2014-11-02 16:58:08

标签: c# nullreferenceexception checkedlistbox

当我在CheckedListBox中检查不是第一项时,我在Application.Run(new Form1())有一个例外。这是我的代码示例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private List<bool> l = new List<bool>() { true, false, true, true, true};

    private void Form1_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 5; i++)
        {
            checkedListBox1.Items.Add(i);
        }
    }

    private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        for (int i = 0; i < 5; i++)
        {
            if (l[i] == true)
            {
                checkedListBox1.Items.Remove(i);
            }
        }
    }
}

有谁知道如何解决它? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

问题在于您正在检查项目,触发与其关联的事件(checkedListBox1_ItemCheck),并且在事件执行时您将其从checkedListBox1中删除。因此,事件不再附加到项目,并且表单会抛出异常。

您可以通过切换应该表现正常的第一个复选框来确认。

您需要重新考虑您希望如何运作。我不知道你为什么这样设计它,但可能有更好的方法。为什么要在支票切换中从checkedListBox1删除项目?您可以使用独立按钮来完成此任务。