在运行时更改按钮名称和事件处理
本文关键字:事件处理 按钮 运行时 | 更新日期: 2024-11-08 22:01:14
在我的 winform 中,在设计器中.cs我拥有的表单部分
this.Button1.Text = "&Click";
this.Button1.Click += new System.EventHandler(this.Button1_Click);
在形式上.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,有什么想法吗?
Button1
引用变量名称。 该变量指向具有Name
属性的 Button
类型的实例。 如果更改 Name
属性的值,则不会更改变量的名称。 您仍然需要将该按钮称为 button1
。 事实上,它并没有真正改变按钮的Name
属性的值。 Name
属性实际上只是为了帮助 Windows 窗体设计器而存在。
如果要将事件处理程序从一种方法更改为另一种方法,则必须首先取消订阅原始处理程序,然后订阅新处理程序。 只需将您的代码更改为以下内容:
Button1.Name = "ButtonTest";
Button1.Click -= this.Button1_Click;
Button1.Click += this.ButtonTest_Click;
这可以通过多种方式完成:
-
从菜单中:编辑 -> 重构 -> 重命名
-
通过方法名称上的上下文菜单:重构 -> 重命名
-
将光标放在"方法名称"上,键入 Alt + Shift + F10,然后选择"重命名"
-
将光标放在方法名称上,然后按 F2