为什么CheckList Box的ItemCheck事件总是落后?

时间:2012-04-25 13:32:52

标签: c# winforms

我正在制作一个winform,我已经拿了一个清单框。我想将核对表框中的已检查项目存储在数组列表中。我的核对表框中有5个项目,我想处理itemcheck事件。

如果我检查一个项目itemcheck事件触发但项目计数再次保持为0如果我检查事件处理程序项目中的2个项目计数变为1如果我重复此过程下次计数变为2(但现在我已检查3项目)。

请帮我解释下面这段代码是我正在使用的代码段:

 private void CLB_Course_ItemCheck(object sender, ItemCheckEventArgs e)
        {            
            List<string> items = new List<string>();            
            foreach (string ItemsChecked in CLB_Course.CheckedItems)
            {
                items.Add(ItemsChecked);
            }
        }

2 个答案:

答案 0 :(得分:1)

正如Mitja所关联的问题所解释的那样,CheckedListBox并不是那么好。

如果您想要一个选中项目列表,可以考虑使用ListView,它有一个CheckBoxes属性,您可以将其设置为true以获得与您相同的行为将获得CheckedListBox,但增加了ItemChecked的功能,因为该事件实际存在于ListView控件中。

在您的事件监听器中,您可以使用e.Item属性(来自ItemCheckedEventArgs)获取已检查的项目,也可以使用ListView的CheckedIndices获取所有选中的项目,或{{1属性。

答案 1 :(得分:0)

之所以发生这种情况,是因为当项目的检查状态发生变化时会引发该事件。直到事件发生后才会更新该值