Как вызвать событие щелчка в коде

#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:

Вы можете запустить его двумя способами:

  1. С подпиской на событие щелчка кнопки:
     this.button1.Click  = new EventHandler(button1_Click);
    //there you have an event:
    private void button1_Click(object sender, EventArgs e)
    {
       //code inside event...
    }
     
  2. или с реальным кодом:
     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 и вставьте скопированный код. Это хорошо, если вы уже нашли какие-либо решения. Надеюсь, это поможет кому-то еще в той же проблеме.