在运行时更改按钮名称和事件处理

时间:2012-08-07 23:54:37

标签: c# .net vb.net winforms

在我的winform中,在我的表单的designer.cs部分

this.Button1.Text = "&Click";
this.Button1.Click += new System.EventHandler(this.Button1_Click);

in form.cs

 private void Button1_Click(object sender, System.EventArgs e)
 {
     //Code goes here.
 }

在表单的一部分中我有一个树视图,当树视图内容被展开时,我需要重命名上面的按钮并连接一个不同的事件

  Button1.Name = "ButtonTest";
  ButtonTest.Click += new System.EventHandler(this.ButtonTest_Click);

但是,如果找不到ButtonTest,我怎么会动态更改按钮名称并调用不同的点击事件方法?

 private void ButtonTest_Click(object sender, System.EventArgs e)
 {
     //Code goes here.
 }

一旦这被称为ButtonTest_Click,我需要将它重命名为Button1,有什么想法吗?

2 个答案:

答案 0 :(得分:6)

Button1指的是变量名称。该变量指向具有Button属性的Name类型的实例。如果更改Name属性的值,则不会更改变量的名称。您仍然需要将按钮称为button1。实际上,它并没有真正改变按钮的Name属性的值。 Name属性仅用于帮助Windows窗体设计器。

如果要将事件处理程序从一个方法更改为另一个方法,则必须首先取消订阅原始处理程序,然后订阅新处理程序。只需将您的代码更改为:

Button1.Name = "ButtonTest";
Button1.Click -= this.Button1_Click;
Button1.Click += this.ButtonTest_Click;

答案 1 :(得分:0)

这可以通过以下几种方式完成:

  1. 来自菜单:编辑 - >重构 - >重命名

  2. 通过方法名称的上下文菜单:重构 - >重命名

  3. 将光标放在方法名称上,然后键入Alt + Shift + F10,然后选择重命名

  4. 将光标放在方法名称上,然后按F2