.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;
}
}
最好的方法是什么? 提前谢谢。
将事件添加到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;
}
}