如何立即/反应性地确定是否已选择任何CheckedBoxListItem?

时间:2015-12-22 17:53:34

标签: c# winforms checkedlistbox selectedindexchanged

我想仅在首次选择有效条件时才启用按钮(C#Windows窗体应用程序)。我有这个代码(我首先尝试了IndexChanged和ValueChanged事件,但是this answer表示要监视的ItemCheck事件:

private void checkedListBoxUnits_ItemCheck(object sender, ItemCheckEventArgs iceargs)
{
    buttonGenRpts.Enabled = ValidSelections();
}

private bool ValidSelections()
{
    bool OneUnitSelected = checkedListBoxUnits.CheckedItems.Count == 1;
    . . .

OneUnitSelected始终为false,即使在checkedListBoxUnits控件中选择了一个项目(复选框控件)之后也是如此。似乎在实际检查复选框之前会触发这些事件。那么我可以利用什么事件来验证CheckedListBox中的项目是否已被检查?

1 个答案:

答案 0 :(得分:1)

这有点苛刻,但您可以推迟运行ValidSelections,直到检查完成:

private void checkedListBoxUnits_ItemCheck(object sender, ItemCheckEventArgs iceargs)
{
    BeginInvoke(() => {
        buttonGenRpts.Enabled = ValidSelections();
    });
}