Программный вызов метода нажатия кнопки

Простая проблема (я думаю): я хочу иметь возможность вызывать метод click для предопределенного объекта, в частности,bindingNavigatorDeleteItem Кнопка на стандартном C #BindingNavigator, Мне нужно перехватить удаление, чтобы убедиться, что запись может быть удалена. Если это так, я хочу вызвать вышеупомянутое событие щелчка, которое делает хорошую работу по удалению указанной записи. Если запись не подлежит удалению, я хочу отменить удаление.

Мой коллега-инженер предлагает мне просто добавить еще одну кнопку в панель инструментов и использовать ее метод щелчка (который, конечно, яcan добраться до), чтобы проверить приемлемость записей и при необходимости вызвать исходную кнопку удаления.

Если есть другой, лучший способ, пожалуйста, передайте его.

Ответы на вопрос(2)

Вместо того, чтобы перехватывать кнопку панели инструментов (и оставлять другие методы открытыми для пользователя, такие как удаление строки в DataGrid), используйте одно из событий в вашем источнике данных, чтобы отменить удаление, если оно недопустимо.

 08 июл. 2009 г., 23:26
Вы ничего не пропустили - в событии DataTable.RowDeleting отсутствует способ отменить удаление. Позор, так как он заставляет вас обходить стороной.
 Bruce06 июл. 2009 г., 17:22
Я думал об этом, но когда я исследовал событие RowDeleting, я не увидел очевидного способа прекращения удаления (например, «Отмена» в CancelEventArgs некоторых событий), поэтому я пошел по другому пути. Если я что-то пропустил, пожалуйста, осветите!
Решение Вопроса

Чтобы просто вызвать клик - вы должны быть в состоянии использоватьPerformClick().

Я немного растерялся из-за других вещей, о которых ты упомянул - можешь уточнить?

 Bruce06 июл. 2009 г., 17:53
Не берите в голову. «Блестящий» программисты из MS решили, что если кнопка не видна, ее функциональность не нужна, так что ... PerformClick работает только тогда, когда кнопка включена и видима (получено из исходного кода) - иди на фигуру!
 Bruce06 июл. 2009 г., 17:12
Я пробовал & quot; PerformClick () & quot; метод и ... ничего не происходит! Есть ли какой-то другой вид подготовки, который я должен сделать, прежде чем метод PerformClick () действительно выполнит? Помощь, предоставляемая этим методом, - это не то, что вы бы назвали «информативным». - это единственная строка текста, которая гласит: «Активирует элемент панели инструментов при щелчке мышью». - как я говорю, не очень полезно. Я, должно быть, что-то упустил, поскольку я пытался успешно вызвать метод с помощью Reflection (благодаря другой публикации в StackOverflow), но элегантность PerformClick () - это то, что я ищу. Не беспокойтесь о других вещах.
 13 сент. 2011 г., 18:55
Спасибо за добавление этого комментария. Я столкнулся с подобной проблемой. Я не чувствовал необходимости фактически показывать свой контроль во время модульного тестирования ... и поэтому кнопка не была видна, и ничего не произошло!

Ваш ответ на вопрос