2015-12-22 7 views
1

Я хочу включить кнопку, только если были выбраны правильные критерии (приложение C# Windows Forms). У меня есть этот код (я пробовал событие IndexChanged и ValueChanged первый, но this answer указует событие ItemCheck является один для мониторинга:Как я могу/сразу определить, был ли выбран CheckedBoxListItem?

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

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

OneUnitSelected всегда ложно, даже после выбора пункта (контроля флажка) в checkedListBoxUnits Кажется, что эти события срабатывают, прежде чем флажок будет проверен. Итак, какое событие я могу проверить, чтобы проверить, что элемент проверен в CheckedListBox?

ответ

1

Это немного взломанный, но вы можете отложить выполнение ValidSelections до тех пор, пока проверка завершена:

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