在C#中,如何轻松更改事件处理程序的名称?

时间:2010-08-11 02:49:30

标签: c# events ide handlers

在VS2008中,如果我双击事件处理程序VS,则创建一个具有默认名称的默认事件处理程序,例如: combobox1_SelectedIndexChanged。

比如说,我现在将combobox1重命名为cbStatus。它仍然具有相同的事件处理程序,所以我现在将其更改为cbStatus_SelectedIndexChanged。

有没有办法,除了旧的事件处理程序之外,VS可以将初始的combobox1_SelectedIndexChange更改为cbStatus_SelectedIndexChange而不是生成新的cbStatus事件处理程序?因为每次我必须将代码剪切并粘贴到新的事件处理程序,然后删除旧的。

此外,如果我已经定义了初始事件处理程序,然后不再需要处理程序,我不能简单地从代码中删除处理程序,因为表单设计者然后抱怨它无法找到原始事件处理程序。有没有办法让VS可以自动从表单设计器中删除事件处理程序的赋值?

我似乎整天都在剪切和粘贴,并从表单设计器代码中删除事件处理程序分配。

4 个答案:

答案 0 :(得分:10)

重命名控件时,还应重命名事件处理程序。正确的方法是重构代码。

要执行此操作,只需在Visual Studio代码编辑器中右键单击事件处理程序的名称,然后选择Refactor -> Rename...这将允许您自动更改的名称它的名称使用

在事件处理程序的情况下,它可能只在另一个地方使用(代码中的点被添加到事件中),因此手动更改它并不会太麻烦。你可以将这种技术应用于几乎所有的东西,当你从几个不同的地方引用你正在改变的东西时,它非常有用。

答案 1 :(得分:2)

您只需在生成的代码中找到combobox1_SelectedIndexChange方法声明的位置,并将名称更改为cbStatus_SelectedIndexChange

更改方法名称后,还必须更新注册处理程序的行:

cbStatus.SelectedIndexChange += new
    SelectedIndexChangeEventHandler(cbStatus_SelectedIndexChange);

答案 2 :(得分:1)

只需键入新名称,然后重新编译即可。我的意思是 - 改变

protected void combobox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

protected void renamedcombobox_SelectedIndexChanged(object sender, EventArgs e)
{

}

然后重新编译

Visual Studio将抛出编译时错误,因为预期的方法不再存在。

双击“输出”窗口中的错误,转到错误处理程序的分配,并更改错误处理程序以匹配新的函数名称。

修改 - 添加

上面的步骤将引导您进入Justin的回答中描述的代码行......

结束修改

我知道这很清楚,但是尝试一下,你会很难或没有困难地解决它。

答案 3 :(得分:0)

如果单击而不是双击以自动创建事件处理程序,则可以指定所需的处理程序名称。你可以使它像“SelectedStatusChangedHandler”,它独立于组合框的变量名。然后按“输入”并让VS为您创建处理程序。