我如何 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();
});
}
我只想在首先选择有效条件时启用按钮(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();
});
}