c# - 在 2 个 WPF 窗口之间发送事件

标签 c# wpf events

我有两个 WPF 窗口。一个是主窗口,另一个是一些配置窗口。 我希望配置窗口将事件发送到主窗口。 知道我如何完成它吗?

这就是我创建和打开配置窗口的方式:

 private void MenuItem_Click(object sender, RoutedEventArgs e)
    {
        ConfigPage Confwin= new ConfigPage();
        Confwin.Owner = this;
        Confwin.Show();
    }

最佳答案

您可以在子窗口类中定义任何事件并在显示窗口之前订阅它。

主窗口

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
    }

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        Child childWindow = new Child();
        childWindow.MyEvent += new EventHandler(childWindow_MyEvent);

        childWindow.ShowDialog();
    }

    void childWindow_MyEvent(object sender, EventArgs e)
    {
        // handle event
        MessageBox.Show("Handle");
    }
}

子窗口

public partial class Child : Window
{
    // define event
    public event EventHandler MyEvent;

    protected void OnMyEvent()
    {
        if (this.MyEvent != null)
            this.MyEvent(this, EventArgs.Empty);
    }

    public Child()
    {
        InitializeComponent();

        this.Loaded += new RoutedEventHandler(Child_Loaded);
    }

    void Child_Loaded(object sender, RoutedEventArgs e)
    {
        // call event
        this.OnMyEvent();
    }
}

关于c# - 在 2 个 WPF 窗口之间发送事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901007/

相关文章:

JavaScript:获取所有绑定(bind)了事件的元素

javascript - 移动窗口时激活/停用事件

c# - 在空闲事件上重复播放视频,并在检测到用户事件时恢复到上一个​​窗口

c# - 帮助 WPF 中的物理模拟

c# - 如何在 C# 中将空值保存到 Mysql 表 DateTime 字段

c# - 在程序集中找不到入口点'Microsoft.EntityFrameworkCore.Design,版本 = 1.1.0.0

c# - 如何返回用户在 PC 中使用的当前文化

wpf - 水平 Stackpanel 填充父控件

java - 找不到符号,keyEvent常量java

c# - 在 MVC 中设置 CaSTLe Windsor