简体   繁体   English

C# 手动激活一个事件

[英]C# activate manual a event

i have a Button with a click event in the background.我有一个按钮,在后台有一个点击事件。 Can i use this method in another timer triggered 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;
            }

        }

Thats the click event.这就是点击事件。 The following snippet is the timer trigger.以下代码段是定时器触发器。

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

Separate logic and event handling.分离逻辑和事件处理。
The simplest way is to extract method:最简单的方法是提取方法:

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

If you really want to to raise the Click event of a button you can use PerformClick() method of button.如果你真的想引发按钮的Click事件,你可以使用按钮的PerformClick()方法。

yourbutton.PerformClick();

This method can be called to raise the Click event.可以调用此方法来引发 Click 事件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM