如何在用户复选框时动态计算CheckedListBox中的已检查项?

Ind*_*igo 4 c# checkedlistbox

我的Windows窗体应用程序上有一个CheckedListBox控件,它提供了一个可供选择的项目列表.我想在用户仍在检查时计算并仅显示已检查(未选中)的项目.我的意思是你检查他们.

我曾尝试使用ItemCheck事件和CheckedListBox.CheckedItems.Count,但问题是即使项目未选中,它也会计算其他所有点击次数.当我检查它的重要性,如果我再次取消选中它,那也是重要的.

我认为它与MSDN上给出的注释有关"在ItemCheck事件发生之前,检查状态不会更新." 我不完全理解这里的问题.

谢谢.

Hae*_*ian 8

ItemCheckEventArgs参数具有Property(NewValue),它告诉您更改是检查,取消选中还是不检查.

如果在事件触发之后才更新CheckedItems.Count(这是我从该注释中理解的) - 那么您可以添加该计数,并查看ItemChecckEventArgs是检查(+1)还是取消选中(-1 )你可以获得正确的总数.

(除非我错误地理解这句话,否则它非常模糊).


Sha*_*vac 7

Haedrian正确回答了这个问题,但我认为原始代码也有很长的路要走.所以这是C#代码:

private void CheckedListBox_ItemCheck(Object sender, ItemCheckEventArgs e)
{
    int sCount = checkedListBox.CheckedItems.Count;
    if (e.NewValue == CheckState.Checked  ) { ++sCount; }
    if (e.NewValue == CheckState.Unchecked) { --sCount; }
    // now sCount is count of selected items in checkedListBox.
}
Run Code Online (Sandbox Code Playgroud)

我有同样的问题,这个问题和答案给了我解决方案.感谢您提出问题和现有答案!