У меня есть 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.