C#将一个按钮分配给另一个按钮

时间:2011-02-08 11:18:15

标签: c# winforms button

我有一个GUI应用程序,它添加了一个按钮。在几个插件dll中,创建了一个新按钮,需要将其添加到GUI中以代替现有按钮。

有没有办法简单地说ButtonA = ButtonB?或者我是否必须在运行时从GUI中删除该按钮,然后添加新按钮?

感谢。

3 个答案:

答案 0 :(得分:3)

或者您可以将其链接到另一个处理程序,例如:

旧的Click事件处理程序

private void ButtonA_Click(object sender, EventArgs e)
{
//Do sth
}

您的新Click事件处理程序(如果您创建新按钮)

private void ButtonB_Click(object sender, EventArgs e)
{
//Do sth
}

然后你需要删除第一个处理程序并添加新的处理程序:

ButtonA.Click -= this.ButtonA_Click;
ButtonA.Click += new EventHandler(ButtonB_Click);

答案 1 :(得分:1)

您的按钮被添加到某个父级(例如,表单)。这意味着您必须从Form的Controls集合中删除原始按钮,然后添加新按钮。或者,您可以替换Controls集合中的按钮。

让我们说在遍历集合之后,你会发现按钮是第5个元素,你可以这样做:

this.Controls[4] = ButtonB;

如果这意味着您必须手动使屏幕无效以更新GUI,我不能100%确定。在这种情况下,请致电ButtonB.Invalidate();

答案 2 :(得分:0)

将您感兴趣的属性从第一个按钮复制到创建的第二个按钮,然后从Controls集合中删除第一个按钮或将.Visible设置为false。

至于事件,你会遇到问题,因为你必须手动调用旧的按钮事件处理程序 - 在.NET中无法读取OnClick(或任何其他事件)订阅者。