首页 文章

窗口最顶端的混乱 - 没有出路?

提问于
浏览
4

在我的WPF应用程序中,我有一个全屏MainWindow . 在MainWindow中,用户可以打开PreviewWindow . PreviewWindow是一个模态窗口,因此它位于MainWindow之上 . 到现在为止还挺好 .

当PreviewWindow打开时,用户仍然可以从Windows任务栏中选择MainWindow . 然后PreviewWindow隐藏在MainWindow下,但MainWindow是不可用的,因为PreviewWindow仍然是唯一的活动窗口 . 对于用户来说,应用程序似乎不再响应 .

我不知道为什么我的用户会像那样工作,但他们这样做会导致很多混乱 .

我们的第一个解决方案是使PreviewWindow最顶级,但这并没有多大帮助 . 用户可以从PreviewWindow打开SaveDialog . 但是使用PreviewWindow最顶层的SaveDialog隐藏在PreviewWindow下 .

我的想法是使PreviewWindow最高,直到用户打开SaveDialog . 在SaveDialog尝试之后再次使它成为最顶层 .

这是唯一的方法吗?有没有办法在选择父窗口时将模态窗口置回顶部?

3 回答

  • 1

    其他答案不完整或相关 . 对不起大家 ;)

    在继续第一个窗口之前,使用ShowDialog()以等待第二个窗口结束 . 使用Owner属性链接窗口 .

    previewWindow = new Window2();
       previewWindow.Owner = this;
       previewWindow.ShowDialog();
    

    如果你需要(w1启动w2,w2启动w3,......),那就可以使用3个或更多窗口 . 在任务栏中选择第一个窗口时,将显示所有窗口 .

    您不需要设置TopMost或ShowInTaskbar属性(但如果您想要特定的行为,则可以)

  • 2

    两件事情:

    • 确保您的PreviewWindow将 ShowInTaskbar 设置为 False .

    • 设置 PreviewWindow.Owner = MainWindow ,然后同时尝试使用 Show()ShowDialog() .

  • 1

    如果是模态窗口,则应使用Window.ShowDialog()显示它 .

    你有什么理由不能那样做吗?

相关问题