Как я могу немедленно / реактивно определить, был ли выбран какой-либо CheckedBoxListItem?
Я хочу включить кнопку только в том случае, если сначала были выбраны действительные критерии (приложение C# Windows Forms). У меня есть этот код (я сначала попробовал события IndexChanged и ValueChanged, но этот ответ указывает на то, что именно событие ItemCheck следует отслеживать:
private void checkedListBoxUnits_ItemCheck(object sender, ItemCheckEventArgs iceargs)
{
buttonGenRpts.Enabled = ValidSelections();
}
private bool ValidSelections()
{
bool OneUnitSelected = checkedListBoxUnits.CheckedItems.Count == 1;
. . .
OneUnitSelected всегда ложно, даже после выбора элемента (флажок элемента управления) в элементе управления selectedListBoxUnits. Кажется, что эти события срабатывают до того, как флажок будет фактически установлен. Так к какому событию я могу подключиться, чтобы убедиться, что элемент проверен в CheckedListBox?
1 ответ
Решение
Это немного глупо, но вы можете отложить ValidSelections
до завершения проверки:
private void checkedListBoxUnits_ItemCheck(object sender, ItemCheckEventArgs iceargs)
{
BeginInvoke(() => {
buttonGenRpts.Enabled = ValidSelections();
});
}