我如何 immediately/reactively 确定是否已选择任何 CheckedBoxListItem?

How can I immediately/reactively determine if any CheckedBoxListItem has been selected?

我只想在首先选择有效条件时启用按钮(C# Windows Forms 应用程序)。我有这段代码(我首先尝试了 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 中选中?

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

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