C#激活手动一个事件

C# activate manual a event

我有一个在后台带有点击事件的按钮。 我可以在另一个定时器触发的事件中使用这个方法吗?

 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();
        }
    }

分离逻辑和事件处理。
最简单的提取方法:

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();
    }
}

如果您真的想引发按钮的 Click 事件,您可以使用按钮的 PerformClick() 方法。

yourbutton.PerformClick();

This method can be called to raise the Click event.