观察哪个窗口发送了Close()事件

时间:2012-07-11 11:15:47

标签: c# wpf

我有一个简短的问题,甚至在网上搜索一段时间后我还没有找到答案。 我在WPF应用程序中有两个窗口。当用户关闭窗口时,应该隐藏一个窗口。当主窗口关闭时,完整的应用程序将关闭。

我用过

    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        e.Cancel = true;
        Hide();
    }

在第二个窗口的类中,希望它只捕获它的Close()事件,但不幸的是它会捕获所有的Close()事件。

如何在窗口之间分开以独立处理事件?

此致 拉里莫

1 个答案:

答案 0 :(得分:1)

使用sender参数,就是它的用途:

window1.Closing += Window_Closing;
window2.Closing += Window_Closing;

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    var w = (Window)sender;

    // Simple ref test to illustrate, but you can use anything else you want instead
    if (w == window1) {
        e.Cancel = true;
        w.Hide();
    }
}