繁体   English   中英

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

[英]In C#, how can you easily change the name of an event handler?

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

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

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

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

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

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

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

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

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

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

cbStatus.SelectedIndexChange += new
    SelectedIndexChangeEventHandler(cbStatus_SelectedIndexChange);

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

protected void combobox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

protected void renamedcombobox_SelectedIndexChanged(object sender, EventArgs e)
{

}

然后重新编译

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

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

编辑 - 添加

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

结束编辑

我知道这很清楚,但尝试它,你会很难或没有困难。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM