从C#中的另一个私有void调用private void

时间:2016-03-18 01:44:05

标签: c# winforms activex interactive-brokers

如果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)
    }
}

6 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:2)

多种选择。

选项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());

答案 2 :(得分:0)

只需用当前参数调用它。

if (Condition)
{
    butSubmit(sender, null)
}

答案 3 :(得分:0)

难以置信,但

btnSubmit_Click(null,null); 

或其他参数,如果需要。

答案 4 :(得分:0)

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

button1_Click类似于普通方法,它接受两个类型为objectEventArgs的输入。因此您可以通过提供相同的参数来调用它们。如果您不打算在方法中使用这些参数,那么您可以通过传递null,null来调用它们,如果您想使用nulle,请不要使用sender在方法内部。在这种情况下称他们像我上面建议的那样。

答案 5 :(得分:0)

感谢Steve和Hari - 这很好用

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
}