2015-10-16 108 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