如何在C#中调用事件方法?

7

在C#中创建按钮时,它还会创建private void button_Click(object sender, EventArgs e)方法。

如何从button2_click调用button1_click方法?
这是可能的吗?

我正在使用Windows Forms。

5个回答

13

如何从button2_click方法中调用button1_click方法?这是可能的吗?

完全可以调用按钮的点击事件,但这是一种不好的做法。将代码从按钮中移动到单独的方法中。例如:

protected void btnDelete_OnClick(object sender, EventArgs e)
{
    DeleteItem();
}

private void DeleteItem()
{
    // your code here
}

使用此策略,您可以轻松地直接调用代码,而无需调用任何事件处理程序。此外,如果您需要将代码从代码后台提取到单独的类或DLL中,您已经比自己领先了两步。


12
// No "sender" or event args
public void button2_click(object sender, EventArgs e)
{
   button1_click(null, null);
}
或者
// Button2's the sender and event args
public void button2_click(object sender, EventArgs e)
{   
   button1_click(sender, e);
}

或者正如Joel指出的那样:

// Button1's the sender and Button2's event args
public void button2_click(object sender, EventArgs e)
{   
   button1_click(this.button1, e);
}

或者,如果你想让button1成为“发送者”,则使用button1_click(this.button1, e)。 - Joel Etherton

4

您没有提到这是否是Windows Forms、ASP.NET还是WPF。如果这是Windows Forms的话,另一个建议是使用button2.PerformClick()方法。我觉得这更加"干净",因为您不是直接调用事件处理程序。


2

您可以在ASPX文件代码中连接按钮事件。

按钮标签将会自动连接事件,如下所示:

<asp:Button  Text="Button1" OnClick="Event_handler_name1" />
<asp:Button  Text="Button2" OnClick="Event_handler_name1" />

只需将 OnClick= 与 button1 的处理方法连接即可。

2
你可以为两个按钮的事件绑定相同的处理程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接