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