从另一个窗口访问主窗口
本文关键字:窗口 访问 另一个 | 更新日期: 2023-09-27 17:53:47
我已经创建了一个从主窗口打开的新窗口。当从这个窗口点击一个按钮时,窗口应该关闭,同时在主窗口中触发一些事件。
我认为这很容易实现,但我不知道如何访问主窗口方法&
任何帮助都会很感激。谢谢!:)
这是错误的做法…子窗口应该有一个可以为其注册处理程序的Closed
事件。如果你真的需要在子窗口关闭之前从子窗口执行父窗口函数,那么你可以在打开子窗口时将委托传递给子窗口。
使用应用程序。主窗口属性
你不需要这样做…
在子窗口中定义一个事件,如:
public event EventHandler Closing;
当你在主窗口创建这个窗口时订阅它:
Window1 wnd = new Window1();
wnd.Closing += new EventHandler(childClosing);
关闭子窗口时检查事件是否已订阅并引发:
if (Closing != null) {
Closing(this, new EventArgs());
}
当然你需要在主窗口设置一个childClosing方法:
private void childClosing(object sender, EvenrArgs e) {
/// do your work
}
如果你需要传递一些数据,那么你可以创建一个派生自EvenrArgs的类并使用它。但你需要一个不同于eventandler的委托,比如:
class ClosingArgs : EventArgs {
// some property here
}
子窗口
delegate void ClosingEventHandler(object sender, ClosingArgs e);
和
public event ClosingEventHandler Closing;
干杯!
这很简单,因为您希望在子窗口关闭时触发主窗口中的操作,只需注册关闭事件:
// In the main window, whenever your start your child window (not in the constructor)
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var window = new Window();
window.Closed += new EventHandler(window_Closed);
window.ShowDialog();
}
void window_Closed(object sender, EventArgs e)
{
throw new NotImplementedException();
}
当子窗口关闭时,主窗口中的window_Closed函数将被调用。