.net 4.0 - 从窗口 1 到主窗口 c# 的触发事件

本文关键字:窗口 事件 net | 更新日期: 2023-09-27 17:56:01

可能的重复项:
在事件发生后更新一个表单

相关信息:使用 WPF 应用程序、C#、Visual Studio 2010、.Net 4

我有两个窗口:Window1和MainWindow。 在窗口 1 中,我有一个复选框,选中该复选框后,将在主窗口中将标签 1 设置为不可见。 我该怎么做?

我不能做MainWindow newWindow = new MainWindow()因为我不想创建一个新的主窗口。 我尝试了以下代码,但抛出了一个异常:{"对象引用未设置为对象的实例。`.

private void checkBox4_Checked(object sender, RoutedEventArgs e)
{
   if (checkBox4.IsChecked == true)
   {
       (Application.Current.MainWindow as MainWindow).label1.Visibility = 
                   Visibility.Hidden;
   }
   else
   {
       (Application.Current.MainWindow as MainWindow).label1.Visibility = 
                   Visibility.Visible;
   }
}
最好的

方法是什么? 提前谢谢。

.net 4.0 - 从窗口 1 到主窗口 c# 的触发事件

将事件添加到Window1

public event Action<bool> SomethingChecked; //TODO rename to indicate what was checked

选中该复选框后,将引发该事件:

private void checkBox4_Checked(object sender, RoutedEventArgs e)
{
    if(SomethingChecked != null)
        SomethingChecked(checkBox4.IsChecked);
}

然后从主窗体添加一个事件处理程序:

Window1 other = new Window1();
other.SomethingChecked += checked => label1.Visibility = 
    checked ? Visibility.Visible : Visibility.Hidden;

在 Window1 中创建一个事件,在 MainWindow 中处理该事件。

只是下面的一个例子,并不是真正的工作代码......

MainWindow
{
    private void SomeStuff()
    {
        Window1 window = new Window1();
        window.CheckBoxClick += new OnCheckBoxClick(SomeMethod);
    }
    private void SomeMethod(bool state)
    {
         // use state;
    }
}