我想在btnDisconnect_Click
内致电btnExit_Click
。
private void btnDisconnect_Click(object sender, EventArgs e)
{
//does something
}
private void btnExit_Click(object sender, EventArgs e)
{
//I want to call btnDisconnect_Click. What line of code should I use here?
}
答案 0 :(得分:3)
通常在这样的情况下,我使我的点击处理程序只调用另一个函数并传入适当的参数:
private void btnDisconnect_Click(object sender, EventArgs e)
{
DoDisconnect();
}
private void DoDisconnect()
{
...
}
然后我可以从任何地方调用相同的函数:
private void btnExit_Click(object sender, EventArgs e)
{
DoDisconnect();
}
这样,你的“断开连接”逻辑就会被虚拟参数搞砸,这些参数实际上不会以任何方式影响断开行为。
这也意味着您可以从表单中开始分解视图逻辑。
答案 1 :(得分:1)
这取决于您是否使用传递给事件处理程序的参数
您可以使用nulls
像
这样的东西private void btnDisconnect_Click(object sender, EventArgs e)
{
//does something
}
private void btnExit_Click(object sender, EventArgs e)
{
//I want to call btnDisconnect_Click. What line of code should I use here?
btnDisconnect_Click(null,null);
}
答案 2 :(得分:0)
他们只是方法。打电话吧。您需要提供btnDisconnect_Click所期望的任何事件参数(可能没什么)。所以最简单的事情是:
private void btnExit_Click(object sender, EventArgs e)
{
btnDisconnect_Click(this, EventArgs.Empty);
}
这将传递当前表单/窗口/它作为发送者的任何内容,以及没有数据的EventArgs对象。
答案 3 :(得分:0)
您可以像列出它一样调用它。下面的this
不是必需的,但它会在代码中加上上下文:
private void btnExit_Click(object sender, EventArgs e)
{
//I want to call btnDisconnect_Click. What line of code should I use here?
this.btnDisconnect_Click(null, null);
// If you need to have sender as something you can always put
// this in directly
this.btnDisconnect_Click(this.btnDisconnect, new System.EventArgs());
}
答案 4 :(得分:0)
我将在这里做一个假设并说你要做的是为断开连接和退出按钮调用Disconnect(可能是网络资源)。您可能希望将disconnect事件处理程序的代码重构为单独的方法,而不是从另一个调用一个事件处理程序方法。然后从两个处理程序中调用该方法。例如:
private void Disconnect()
{
//Disconnect here
}
private void btnDisconnect_Click(object sender, EventArgs e)
{
//do some other stuff here
Disconnect();
}
private void btnExit_Click(object sender, EventArgs e)
{
//do some other exit stuff here
Disconnect();
}
这使您的代码更加清晰,使您不必从另一个调用一个事件处理程序。这开始将您的视图逻辑与程序逻辑的其余部分分开,从长远来看,这更加可取并且更容易维护。例如,您可能需要一个单独的控制器来处理网络资源,而不是将其嵌入到视图的逻辑中。
答案 5 :(得分:0)
在最简单的情况下,您可以直接调用btnDiconnect_Click,如下所示:
private void btnDisconnct_Click(Object sender, EventArgs e)
{
//Does Something
}
private void btnExit_Click(Object sender, EventArgs e)
{
//Call btnDisconnect_Click()
btnDisconnect_Click(sender, e);
}
答案 6 :(得分:0)
你可以调用传入有效参数的方法。
btnDisconnect_Click(btnDisconnect,new EventArgs());
但是,您可能需要考虑将btnDisconnect
中的代码重构为新方法并调用它:
private void doSomething()
{
//....
}
private void btnDisconnect_Click(object sender, EventArgs e)
{
doSomething();
}
private void btnExit_Click(object sender, EventArgs e)
{
doSomething();
}
答案 7 :(得分:0)
{// this is probably your constructor
.
public delegate void MyCustomHandler(object sender, EventArgs e);
.
MyCustomHandler myCustomHandler = new MyCustomHandler(); //you can do more in your delegates constructor, members etc
myCustomHandler += btnExit_Click;
myCustomHandler += btnDisconnect_Click;
}
private void btnDisconnect_Click(object sender, EventArgs e)
{
// do Something
}
private void btnExit_Click(object sender, EventArgs e)
{
// do Something
}
//And wherever you need to invoke these, you do
myCustomHandler(object sender, EventArgs e);