4

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

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

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

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

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

4

4 回答 4

10

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

为此,只需在 Visual Studio 代码编辑器中右键单击事件处理程序的名称并选择这将允许您在使用它的任何地方Refactor -> Rename...自动更改它的名称。

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

于 2010-08-11T02:53:39.977 回答
2

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

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

cbStatus.SelectedIndexChange += new
    SelectedIndexChangeEventHandler(cbStatus_SelectedIndexChange);
于 2010-08-11T02:53:29.400 回答
1

只需输入新名称,然后重新编译。我的意思是——改变

protected void combobox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

protected void renamedcombobox_SelectedIndexChanged(object sender, EventArgs e)
{

}

然后重新编译

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

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

编辑 - 添加

上述步骤将跳转到贾斯汀回答中描述的代码行......

结束编辑

我知道这很清楚,但是尝试一下,您会毫不费力地弄清楚。

于 2010-08-11T02:52:55.270 回答
0

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

于 2010-08-11T02:52:39.323 回答