2010-11-23 25 views

回答

1

这取决于如果您使用传递给事件处理程序的参数

你可以yust称它为使用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); 
} 
0

他们只是方法。只需调用它。您需要提供btnDisconnect_Click预期的任何事件参数(这可能不是什么)。所以,最简单的做法是:

private void btnExit_Click(object sender, EventArgs e) 
{ 
    btnDisconnect_Click(this, EventArgs.Empty); 
} 

这将通过目前的形式/窗/不管它是作为发件人,和一个EventArgs没有数据对象。

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()); 
} 
+0

EventArgs.Empty :) – jgauffin 2010-11-23 05:11:29

3
在这样的情况下

通常我让我的点击处理程序只能调用另一个函数,然后在适当的参数传递:

private void btnDisconnect_Click(object sender, EventArgs e) 
{ 
    DoDisconnect(); 
} 

private void DoDisconnect() 
{ 
    ... 
} 

然后我可以调用来自同一功能的地方:

private void btnExit_Click(object sender, EventArgs e) 
{ 
    DoDisconnect(); 
} 

这样,你的“脱节”的逻辑是通过采取哑元粘住了实际上并不影响以任何方式断开行为。

这也意味着你可以开始从窗体中分解出查看逻辑。

0

我在这里做一个假设,并说你要做的是为断开连接和退出按钮调用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(); 
} 

这使得您的代码更加清洁,并且不必从另一个事件处理程序中调用一个事件处理程序。这开始将您的视图逻辑与程序逻辑的其余部分分离开来,从长远来看这更加可取并且更容易维护。例如,您可能需要一个单独的控制器来处理网络资源,而不是将其嵌入到视图的逻辑中。

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); 
} 
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(); 
} 
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); 
相关问题