2016-03-18 40 views
1

如果axTws1_tickPrice中的某些条件属实,我想致电btnSubmit。我该怎么做呢?从C#中的另一个私人空白调用私人空白#

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

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

例如:

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 
} 
0

只是当前参数调用它。

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

难以置信,但

btnSubmit_Click(null,null); 

或者,如果需要其他参数。

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

button1_Click类似于它接受object类型和EventArgs的两个输入因此可以通过赋予相同的参数调用它们通常的方法。如果你不打算在方法内部使用这些参数,那么你可以通过传递null,null来调用它们,如果你想在方法内部使用esender,请不要使用null。在这种情况下,就像我上面提出的那样称呼他们。

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()方法,其生成用于点击一个按钮事件。

btnSubmit.PerformClick(); 

选项3:

调用事件方法像任何其他常规方法。

btnSubmit_Click(sender, new EventArgs()); 
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 
} 
+0

如果其中一个答案帮助你,你应该单击复选标记旁边将其标记为接受,而不是张贴“感谢“答案。 – Steve