У меня есть CheckBox как часть настраиваемого элемента управления в форме. Я обрабатываю его событие Validating, чтобы установить не более 5 флажков. Если 5 уже отмечены галочкой, я отменяю мероприятие. Это прекрасно работает.
Однако теперь, когда у меня установлено 5 флажков, каждое событие отменяется (кроме снятия отметки с первого отмеченного флажка). Это означает, что нажатия кнопок, фокусировка текстового поля, выпадающий список комбо и выходы из приложения не работают. Объект-отправитель по-прежнему остается CheckBox; просто не знаю, почему это срабатывает.
Почему событие проверки флажка запускается каждый раз, когда я делаю что-нибудь? (Я бы подумал, что это сработает только тогда, когда вы щелкнете флажок). Правильно ли использовать событие «Проверка»?
Дополнительные странные вещи: при установке или снятии флажка 5-го флажка никакое событие не обрабатывается, несмотря на наличие там обработчика событий. Тот же флажок вызовет событие проверки, если это 4-й или 6-й флажок.
Мой код: в родительской форме:
private List<MyCustomClass> GetSelectedItems()
{
List<MyCustomClass> result = new List<MyCustomClass>();
foreach (MyCustomClass c in listOfControls)
{
if (c.Selected())
{
result.Add(c);
}
}
return result;
}
private void validate(object sender, CancelEventArgs e)
{
if (GetSelectedItems().Count == 5)
{
e.Cancel = true;
}
}
Метод Selected
класса MyCustomClass просто возвращает chkBox.Checked.