当从任务栏中选择子窗口时,将父窗口置于前面

时间:2012-06-19 14:29:29

标签: c# wpf window focus parent-child

标题几乎说明了一切,但基本上我有一个主父窗口,偶尔会打开子窗口。现在可以从Windows 7任务栏中选择一个子窗口,只有那个窗口会被带到前面。我希望找到一种方法将父窗口链接到此命令,以便在选择子窗口时,父窗口也会自动显示在前面。

我尝试在子窗口'GotFocus Focus() BringIntoView()`方法中使用Topmost = trueevent handler, but neither seemed to make a difference. I also tried the命令,但同样,没有快乐。有没有人见过这个或知道实现这个的方法?

这是我到目前为止所尝试过的。首先设置mainWindow然后立即设置子窗口的逻辑是我仍然希望子窗口具有焦点,但我希望mainWindow高于任何其他正在运行的程序(即Excel, VS等等。

    private void Window_GotFocus(object sender, RoutedEventArgs e)
    {
        var mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;

        mainWindow.Topmost = true;
        this.Topmost = true;

    }

1 个答案:

答案 0 :(得分:2)

我认为您正在收听错误的事件,以便在选择窗口时收到通知。在您的子窗口中订阅Activated事件,该事件会在您在任务栏中选择窗口时通知您。从那里你可以激活()你的MainWindow。

此外,我认为如果您将父窗口设置为子窗口的所有者,您将自动获得此行为。