Проверка результатов события при потере события нажатия кнопки в Winforms

Предыстория: у меня есть форма с "очистить форму" и кнопку "отмена". Если у меня есть неверные данные в раскрывающемся списке и я нажимаю любую из этих кнопок, срабатывает событие проверки раскрывающегося списка. Я добавил код к событию проверки, чтобы добиться успеха при нажатии «очистить» или «отмена».

Проблема: я ожидаю, что следующее, что произойдет, это то, что события нажатия кнопки сработают. В случае с кнопкой «Отмена» это так. А вот события для кнопки "очистить" нет. Я не вижу никакой разницы между двумя кнопками/событиями. Что происходит и как это исправить?


person Jeff    schedule 19.03.2009    source источник


Ответы (2)


Не уверен, что вас беспокоит, ни одно событие Click не должно запускаться, когда вы устанавливаете e.Cancel в обработчике событий Validating. Но есть лучший способ сделать это. Задайте для свойства CausesValidation кнопок значение False.

person Hans Passant    schedule 19.03.2009
comment
TY, свойство CausesValidation было именно тем, что мне было нужно! Вчера потратил больше часа на всевозможные глупые обходные пути. Действительно ценю это. - person Jeff; 19.03.2009

Я столкнулся с другим подобным сценарием. В поисках ответа я наткнулся на этот старый вопрос, который задавал несколько месяцев назад! В этом случае события проверки переместили фокус с исходного поля, поэтому к тому времени, когда событие кнопки было готово к срабатыванию, оно не могло произойти. В итоге решил это, явно вызвав событие нажатия кнопки из проверки.

person Jeff    schedule 14.10.2009