2016-03-18 36 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