#c# #winforms
#c# #winforms — формы
Вопрос:
у меня есть приложение, разработанное на c # задолго до этого некоторыми разработчиками, теперь мы начали обеспечивать обслуживание.
Когда я просматривал код, я видел событие щелчка « private void _menuNewView_Click(object sender, EventArgs e)
«, которое не срабатывает, когда я ставлю точку останова и запускаю действие из пользовательского интерфейса, странный вид.
Когда я открываю представление дизайна, я открываю строку контекстного меню и нажимаю на menu "newview"
то, что запускает код, лежащий в основе события click « private void _menuNewView_Click(object sender, EventArgs e)"
.
Но из пользовательского интерфейса я запустил приложение и ввел точку останова click event
в коде и выполнил операцию newview, но она не сработала, кто-нибудь может мне здесь помочь, действие new view на данный момент не завершено, это одна из ссылок на событие click
Комментарии:
1. Попробуйте найти все ссылки в обработчике событий. Где на него ссылаются?
2. Это единственная ссылка? Если вы поставите там точку останова, она запустится?
3. Убедитесь, что нет отмены регистрации события щелчка в любом другом месте (-=) или перестроения _menuNew в любом месте
4. Выполняется ли
menuNew.Click =
строка?5. Привет всем, извините, что отнял у вас драгоценное время, то же событие щелчка используется в некоторых других cotrols, которые являются ответственными, я поставил там точку останова, и теперь все в порядке
Ответ №1:
Вы можете запустить его двумя способами:
- С подпиской на событие щелчка кнопки:
this.button1.Click = new EventHandler(button1_Click); //there you have an event: private void button1_Click(object sender, EventArgs e) { //code inside event... }
- или с реальным кодом:
button1_Click(new object(), new EventArgs());
Комментарии:
1. спасибо за предоставленную информацию,, но ошибка с моей стороны заключалась в том, что одно и то же событие щелчка было определено на двух разных страницах, и я выбрал неправильный
2. : D я действительно совершил ту же ошибку, и ваш комментарий помог мне поблагодарить вас!
Ответ №2:
Я пришел сюда за помощью по запуску события щелчка в toolstripitem, для которого я создал событие вручную, поэтому у меня не было метода для прямого вызова. Но оказывается, что у tsi есть метод, который называется
PerfomClick()
Это запускает событие щелчка; Я не думал искать метод, поэтому я решил поделиться им здесь и, надеюсь, помочь другим в той же ситуации.
Мой код выглядит примерно так, если это помогает:
Нажмите выполнено на втором элементе toolstrip в контекстном меню
ContextMenuStrip.Items[1].PerformClick();
Затем событие само
tsmi.Click = (s, e) =>
{
BackUpVSSolution(@"C:temp");
};
И это работает как заклинание
думал, что я тоже добавлю это. если вы просто хотите начать то, что когда-либо связано с типом файла или чем-то еще, вы можете просто изменить его на что-то вроде
tsmi.Click = (s, e) =>
{
Process.Start("C:temptemptext.txt");
};
и это откроет вашу программу текстового редактора по умолчанию.
Ответ №3:
Эта проблема возникнет, если имя элемента управления кнопки изменится после создания Click_Event. Итак, я думаю, скопируйте свой код и удалите событие из представления кода, запустите свое решение, и, безусловно, произойдет ошибка, нажмите на ошибку, и это приведет вас к сгенерированному дизайнером коду. Удалите / прокомментируйте эту часть (одну строку Click_Event_Name). Перестройте свой код и создайте новое событие Click_Event и вставьте скопированный код. Это хорошо, если вы уже нашли какие-либо решения. Надеюсь, это поможет кому-то еще в той же проблеме.