2

btnSubmit如果某些条件axTws1_tickPrice为真,我想打电话。我该怎么做呢?

private void btnSubmit_Click(object sender, EventArgs e)
{
  //code here
}

private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{    
    if (Condition)
    {
        Call butSubmit (how do i do this)
    }
}
4

6 回答 6

4

你最好有一个你的控制处理程序都调用的通用方法,而不是试图从另一个处理程序调用一个处理程序。这样,您的代码就更具可扩展性和可测试性,而且您不必担心事件参数或发送者。

例如:

private void btnSubmit_Click(object sender, EventArgs e)
{
    DoStuff();
}

private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{    
    if (Condition)
    {
        DoStuff();
    }
}

private void DoStuff()
{
    // code to do stuff common to both handlers
}
于 2016-03-18T01:47:01.260 回答
3

多种选择。

选项1 :

首选方法,将通用逻辑移至另一种方法。

private void btnSubmit_Click(object sender, EventArgs e)
{
    CommonLogic();
}

private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{    
    if (Condition)
    {
        CommonLogic();
    }
}

private void CommonLogic()
{
    // code for common logic
}

选项 2:

PerformClick()为按钮生成 Click 事件的执行方法。

btnSubmit.PerformClick();

选项 3:

像任何其他普通方法一样调用事件方法。

btnSubmit_Click(sender, new EventArgs());
于 2016-03-18T02:14:37.390 回答
0

只需使用当前参数调用它。

if (Condition)
{
    butSubmit(sender, null)
}
于 2016-03-18T01:47:10.243 回答
0

难以置信,但是

btnSubmit_Click(null,null); 

或其他参数(如果需要)。

于 2016-03-18T01:47:12.993 回答
0
private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{    
    if (Condition)
    {
        button1_Click(sender, EventArgs.Empty);
    }
}

button1_Click类似于接受两个类型输入的普通方法,object因此 EventArgs您可以通过提供相同的参数来调用它们。如果您不打算在方法内部使用这些参数,那么您可以通过传递null,nulldon't use nullif you want to useesender在方法内部来调用它们。在这种情况下,像我上面建议的那样打电话给他们。

于 2016-03-18T01:49:57.677 回答
0

谢谢史蒂夫和哈里 - 这很好用

private void btnSubmit_Click(object sender, EventArgs e)
{
    DoStuff();
}

private void axTws1_tickPrice(object sender, AxTWSLib._DTwsEvents_tickPriceEvent e)
{    
    if (Condition)
    {
        DoStuff();
    }
}

private void DoStuff()
{
    // code to do stuff common to both handlers
}
于 2016-03-18T15:02:51.803 回答