В C # как вы можете легко изменить имя обработчика событий? - PullRequest
4 голосов
/ 11 августа 2010

В VS2008, если я дважды щелкну на обработчике событий, VS создаст обработчик событий по умолчанию с именем по умолчанию, например, combobox1_SelectedIndexChanged.

Скажем, например, я теперь переименую combobox1 в cbStatus. Он по-прежнему имеет тот же обработчик событий, поэтому я теперь изменил его на cbStatus_SelectedIndexChanged.

Есть ли способ, где VS может изменить начальный combobox1_SelectedIndexChange на cbStatus_SelectedIndexChange вместо генерации нового обработчика событий cbStatus в дополнение к старому обработчику событий? Потому что каждый раз мне нужно вырезать и вставить код в новый обработчик событий, а затем удалить старый.

Кроме того, если я определил начальный обработчик события, а затем больше не требую обработчик, я не могу просто удалить обработчик из кода, так как дизайнер форм жалуется, что он не может найти исходный обработчик события. Есть ли способ, где VS может автоматически удалить назначение обработчика событий из конструктора форм?

Кажется, я трачу весь день на вырезание и вставку и удаление назначений обработчиков событий из кода конструктора форм.

Ответы [ 4 ]

10 голосов
/ 11 августа 2010

Когда вы переименовываете элемент управления, вы должны также переименовать обработчик событий. Правильный способ сделать это - рефакторинг кода.

Чтобы сделать это, просто щелкните правой кнопкой мыши имя обработчика событий в редакторе кода Visual Studio и выберите Refactor -> Rename... Это позволит вам автоматически изменять его имя везде , где оно используется.

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

2 голосов
/ 11 августа 2010

Вам просто нужно найти место в сгенерированном коде, где объявлен метод combobox1_SelectedIndexChange, и изменить имя на cbStatus_SelectedIndexChange.

После того, как вы измените имя метода, вы также должны обновить строку, в которой вы регистрируете обработчик:

cbStatus.SelectedIndexChange += new
    SelectedIndexChangeEventHandler(cbStatus_SelectedIndexChange);
1 голос
/ 11 августа 2010

Просто введите новое имя, затем перекомпилируйте. Под этим я подразумеваю - Изменить

protected void combobox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

до

protected void renamedcombobox_SelectedIndexChanged(object sender, EventArgs e)
{

}

и затем перекомпилировать

Visual Studio выдаст ошибку во время компиляции, поскольку ожидаемый метод больше не существует.

Дважды щелкните по ошибке в окне «Вывод», чтобы перейти к назначению обработчика ошибок, и измените там обработчик ошибок в соответствии с новым именем функции.

Редактировать - добавлено

Приведенный выше шаг приведет вас к строке кода, описанной в ответе Джастина ...

Конец редактирования

Я знаю, что это ясно, как грязь, но попробуйте, и вы поймете это практически без затруднений.

0 голосов
/ 11 августа 2010

Если вы автоматически щелкаете вместо двойного щелчка, чтобы автоматически создать обработчик событий, вы можете указать желаемое имя обработчика. Вы можете сделать что-то вроде «SelectedStatusChangedHandler», который не зависит от имени переменной в выпадающем списке. Затем нажмите «enter» и дайте VS создать обработчик для вас.

...