Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用checkedListBox\u ItemCheck后出现NullReferenceException_C#_Nullreferenceexception_Checkedlistbox - Fatal编程技术网

C# 调用checkedListBox\u ItemCheck后出现NullReferenceException

C# 调用checkedListBox\u ItemCheck后出现NullReferenceException,c#,nullreferenceexception,checkedlistbox,C#,Nullreferenceexception,Checkedlistbox,当我在CheckedListBox中勾选not第一项时,这里有一个异常应用程序。运行(new Form1())。下面是我的代码示例 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private List<bool> l = new List<bool>() { true, false, true, true, tru

当我在CheckedListBox中勾选not第一项时,这里有一个异常
应用程序。运行(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:表单
{
公共表格1()
{
初始化组件();
}
私有列表l=新列表(){true,false,true,true};
私有void Form1\u加载(对象发送方、事件参数e)
{
对于(int i=0;i<5;i++)
{
选中列表框1.项目。添加(i);
}
}
私有void checkedListBox1_ItemCheck(对象发送方,ItemCheckEventArgs e)
{
对于(int i=0;i<5;i++)
{
如果(l[i]==真)
{
选中列表框1.项目。删除(i);
}
}
}
}
有人知道怎么修吗?
提前感谢。

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

您可以通过切换第一个复选框来确认这一点,该复选框应表现良好


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

提示:您迭代了list
l
的5个元素,但从
checkedListBox1
中删除了一些项目,因此在删除之后,将不会有5个元素……
for(int i=0;i
但是为什么调试过程中的每一步都显示一切正常?你能在你的电脑上检查一下吗?可能是重复的谢谢,但它不工作。检查一下。例外情况是Application.Run(newform1())。为什么?@AlexSacket:我更新了我的答案。如果您需要进一步澄清,请告诉我。我想删除与选中项目不兼容的项目。不兼容项在列表
l
中标记为true。当我切换第二个为false的项时,因为它不能与自身不兼容,所以必须删除所有“true”项。首先我想把它禁用,但在那种控制下是不可能的。所以我决定把它去掉。如果您不明白,我可以给您发一张图片,说明它必须如何工作。@AlexSacket:选中复选框时不要删除项目。当其他操作发生时(例如,单击显示“删除选中项”的按钮)将其删除。@siride:选中项不会被删除,因为此项在
l
列表中标记为false,因此跳过