0

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

问题是,当我单击checkedListBox2 的第一项(索引0)并且该项目被选中时,函数checkedListBox2.GetItemChecked()返回false,而不是true,并且取消选中我的第一项(我的SelectedIndexChanged 事件没有取消选中项目的代码)。仅当我第一次单击第一个项目时才会发生这种情况(如果我之前单击另一个任何项目,一切正常)。如果未选中第一项,也一切正常。

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

无法理解有什么问题。首先我认为问题是在加载checkedListBox2期间事件上升,但即使在加载之后也是同样的问题。我错过了什么吗?

4

2 回答 2

0

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

ItemCheck 事件在检查项目后触发,但 SelectedIndexChanged 事件在选择项目时触发,这意味着不一定要检查它。

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

    }
}
于 2012-10-02T20:59:11.533 回答
0

想想看。
第一项是选定的项目。
该事件是 SelectedIndexChanged。
您可以单击第一个(索引 0)100 次,并且该事件不会被触发。

您需要挂钩到不同的事件。

最好通过两种方式绑定来完成。

于 2012-10-02T21:04:14.077 回答