C# .NET CheckedListBox第一项第一次单击

C# .NET CheckedListBox第一项第一次单击,c#,.net,events,checkedlistbox,C#,.net,Events,Checkedlistbox,我从数据库中选择一个条目,然后将文件列表加载到checkedListBox2,并检查与我在数据库中的条目相关的文件。这一切都是以checkedListBox2的形式出现的。选中的项目与数据库条目相关,而不是未选中 问题是,当我单击checkedListBox2的第一项(索引0)并选中该项时,函数checkedListBox2.GetItemChecked()返回false而不是true,并取消选中我的第一项(我的SelectedIndexChanged事件没有取消选中项的代码)。只有当我第一次点

我从数据库中选择一个条目,然后将文件列表加载到checkedListBox2,并检查与我在数据库中的条目相关的文件。这一切都是以checkedListBox2的形式出现的。选中的项目与数据库条目相关,而不是未选中

问题是,当我单击checkedListBox2的第一项(索引0)并选中该项时,函数checkedListBox2.GetItemChecked()返回false而不是true,并取消选中我的第一项(我的SelectedIndexChanged事件没有取消选中项的代码)。只有当我第一次点击第一个项目时才会发生这种情况(如果我之前点击了另一个项目,一切都正常)。如果未选中第一项,则所有选项都可以正常工作

 private void checkedListBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (checkedListBox2.GetItemChecked(checkedListBox2.SelectedIndex) == true)
        {
           ...
           ...
        else
        {
           ....
        }
    }

我不明白怎么了。首先,我认为问题在于事件在checkedListBox2的加载过程中出现,但即使在加载之后也会出现同样的问题。我遗漏了什么吗?

您是否尝试过使用ItemCheck事件,而不是使用SelectedIndexChanged

ItemCheck事件在检查项目后激发,但SelectedIndexChanged事件在选择项目时激发,这意味着不必对其进行检查

private void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e) {
    if (checkedListBox.GetItemChecked(e.Index)) { 

    }
}
想想看。
第一项是所选项目。
事件已选择为已更改索引。
您可以单击第一个(索引0)100次,并且不会触发该事件

你需要参加一个不同的活动


最好是通过双向绑定来实现

我知道,checkedListBox中的每个选中项都有一个值,所以我使用此事件在numericUpDown中显示该值。当我单击一个项目时,如果选中,我会显示与该项目相关的值了解英语是第二语言购买这一点不清楚。你对woni的回答就更不清楚了。对不起,你是对的)我的英语不是很好。