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

Предупреждение для новичков в .NET

Используя Visual C# 2008 Express Edition, я случайно создал событие click для кнопки. Затем я удалил автоматически созданный код метода, что привело к ошибке, говорящей о том, что функция, на которую теперь есть ссылка в коде загрузки формы, больше не может быть найдена.

Удаление следующей строки из функции InitializeComponent() файла Form1.Designer.cs...

this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click);

... кажется, помогает, однако я чувствую себя очень грязным из-за следующего предупреждения в начале #region:

/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.

Мне не удалось найти способ сделать это с помощью конструктора форм, который, как я полагаю, является средством, подразумеваемым этим предупреждением. Каков правильный способ сделать это?


person Wayne Koorts    schedule 01.05.2010    source источник
comment
Иногда я просто удаляю из кода, не имеет значения, знаете ли вы, что делаете.   -  person Oskar Kjellin    schedule 02.05.2010


Ответы (2)


Вы должны быть осторожны при работе с файлами Designer.cs, но вам не нужно чувствовать себя грязным по этому поводу (когда я делаю ту же ошибку, ее проще исправить в файле Designer.cs). Вы можете сделать это визуально так:

  1. Откройте форму в конструкторе форм.
  2. В конструкторе форм нажмите интересующую кнопку.
  3. Нажмите F4 (или щелкните правой кнопкой мыши кнопку, а затем выберите свойства). Должна появиться панель свойств.
  4. В верхней части панели свойств щелкните значок молнии. Это показывает события для кнопки.
  5. Найдите событие клика и очистите его обработчик.
person Jason Punyon    schedule 01.05.2010

Хорошо, обычно я выступаю за использование notepad2 или какого-либо другого текстового редактора для выполнения задач кодирования.

Но, поскольку вы спрашиваете, как это сделать в Дизайнере...

  1. Откройте форму, в которой ошибочное событие было добавлено в элемент управления.
  2. Выберите элемент управления.
  3. Щелкните правой кнопкой мыши, выберите «Свойства».
  4. Перейдите в «События», выбрав кнопку со значком молнии.
  5. Выберите событие, которое нужно удалить.
  6. Поместив мышь в поле, в котором отображается имя метода обработчика событий, удалите весь текст в этом поле и нажмите клавишу ввода. Это удалит обработчик события и назначение делегата для этого события на вашем элементе управления.

Единственное предостережение: если вы хотите сохранить свой метод обработчика событий (т. е. он не генерируется автоматически Visual Studio), вы, вероятно, захотите избежать удаления назначения таким образом. Потому что, когда я говорю, что он удаляет обработчик событий, я должен сказать, что объявление метода обработчика событий в «Form1.cs» (например) также будет удалено.

person EtherealMonkey    schedule 02.05.2010
comment
Ладно, я отсталый. Я не нажал кнопку «Обновить» до того, как начал печатать. Джейсон Пуньон уже сказал то же самое. Я оставлю свой ответ, потому что я думаю, вы должны знать, что если вы сделаете это таким образом, вы удалите обработчик события (без предупреждения). Я бы дал +1 Джейсону, но у меня нет представителя ;-) - person EtherealMonkey; 02.05.2010
comment
Это не удалило фактическую функцию для меня, что меня действительно удивило. - person Wayne Koorts; 02.05.2010
comment
Он удаляет только пустые методы, что имеет смысл. - person maf-soft; 15.05.2016