2015-10-16 164 views
0

我有一個按鈕,在後臺單擊事件。 我可以在另一個定時器觸發的事件中使用此方法嗎?C#激活手動事件

private void bt_Disconnect_Click(object sender, RoutedEventArgs e) 
     { 
      if(ser.disconnect()) 
      { 
       img_Ampel.Source = ampeln[0]; 
       bt_Connect.IsEnabled = true; 
       bt_Disconnect.IsEnabled = false; 
      } 

     } 

這就是點擊事件。 以下片段是定時器觸發器。

private void polling_tick(object sender, EventArgs e) 
    { 
     if (!serial_port.IsOpen) 
     { 
      mw.Show("Die Verbindung ist abgebrochen!", "Bitte schließen Sie das Gerät wieder an uns klicken Sie auf Verbinden."); 
      polling.Stop(); 
      MainWindow.bt_Disconnect_Click(); 
     } 
    } 

回答

1

如果你真的想提高Click事件一個按鈕,你可以用按鈕PerformClick()方法。

yourbutton.PerformClick(); 

這種方法可以稱爲提高Click事件。

2

單獨的邏輯和事件處理。
最簡單的方法是提取方法:

private void DoSmth() 
{ 
    if(ser.disconnect()) 
    { 
     img_Ampel.Source = ampeln[0]; 
     bt_Connect.IsEnabled = true; 
     bt_Disconnect.IsEnabled = false; 
    } 
} 

private void bt_Disconnect_Click(object sender, RoutedEventArgs e) 
{ 
    DoSmth(); 
} 

private void polling_tick(object sender, EventArgs e) 
{ 
    if (!serial_port.IsOpen) 
    { 
     mw.Show("..."); 
     polling.Stop(); 
     DoSmth(); 
    } 
} 
+0

@Stefan:因爲99.99%OP不希望引發一個事件,而是要重用一些代碼,已經呈現在'Click'處理。 – Dennis