C# 背景中显示的窗口

C# 背景中显示的窗口,c#,wpf,view,window,C#,Wpf,View,Window,对于我的应用程序的某些用户,一些WPF窗口将显示在Shellwindow后面。这只发生在某些地方。Shellwindow没有设置为最顶层。我希望有人能给我一个提示,我能做些什么来防止这种情况 谢谢 向您致意,thomas您可以将辅助窗口的设置为主窗口,以避免子窗口出现在主窗口后面。我想这就是你所说的贝壳窗 以下是执行此操作的一些后果(来自文档): 如果最小化所有者窗口,则其所有的窗口也将最小化 如果最小化拥有的窗口,则不会最小化其所有者 如果所有者窗口最大化,则所有者窗口及其拥有的窗口都将恢复

对于我的应用程序的某些用户,一些WPF窗口将显示在Shellwindow后面。这只发生在某些地方。Shellwindow没有设置为最顶层。我希望有人能给我一个提示,我能做些什么来防止这种情况

谢谢

向您致意,thomas

您可以将辅助窗口的设置为主窗口,以避免子窗口出现在主窗口后面。我想这就是你所说的贝壳窗

以下是执行此操作的一些后果(来自文档):

  • 如果最小化所有者窗口,则其所有的窗口也将最小化
  • 如果最小化拥有的窗口,则不会最小化其所有者
  • 如果所有者窗口最大化,则所有者窗口及其拥有的窗口都将恢复
  • 所有者窗口永远无法覆盖所有者窗口。
  • 未使用ShowDialog打开的自有窗口不是模式窗口。用户仍然可以与所有者窗口交互
  • 如果关闭所有者窗口,其所有者窗口也将关闭
  • 如果所有者窗口使用Show打开了所有者窗口,并且所有者窗口已关闭,则不会引发所有者窗口的关闭事件
您可以将辅助窗口的设置为主窗口,以避免子窗口出现在主窗口后面。我想这就是你所说的贝壳窗

以下是执行此操作的一些后果(来自文档):

  • 如果最小化所有者窗口,则其所有的窗口也将最小化
  • 如果最小化拥有的窗口,则不会最小化其所有者
  • 如果所有者窗口最大化,则所有者窗口及其拥有的窗口都将恢复
  • 所有者窗口永远无法覆盖所有者窗口。
  • 未使用ShowDialog打开的自有窗口不是模式窗口。用户仍然可以与所有者窗口交互
  • 如果关闭所有者窗口,其所有者窗口也将关闭
  • 如果所有者窗口使用Show打开了所有者窗口,并且所有者窗口已关闭,则不会引发所有者窗口的关闭事件

据我所知,只有三种情况下,您的一个窗口可能会失去焦点,消失在另一个应用程序的窗口后面:

  • 调用SetForegroundWindow()的程序,将其中一个窗口推到前台。自Win98以来,Windows针对这一问题采取了具体的应对措施,Win98是一种经常发生的用户界面犯罪。它仅在一段时间内未在活动窗口中检测到任何输入事件时才允许此操作。否则,它将闪烁任务栏按钮。当然,程序员已经找到了应对措施。大约两年前,Windows Update的一个版本开始这样做。幸运的是,负责这件事的程序员被带到外面枪毙了

  • 自我造成的那种,由短时间内没有任何窗口能够接收焦点触发。Windows窗口管理器被迫查找另一个窗口以将焦点提供给。这很可能是一个“壳窗口”,只要方便。在显示对话框并隐藏主窗口或自己禁用主窗口时,通常会出现这种情况。并在对话框关闭时再次显示。那太晚了,还有一小部分时间没有窗口可以获得焦点。顺便说一句,它不会重复得很好,一点也不会,因为它取决于其他可用窗口

  • 在线程上显示顶级非自有窗口。这样的窗口不能与应用程序中的其他窗口具有任何Z顺序关系,并且只有桌面窗口作为父窗口。它与任何其他窗口竞争,包括资源管理器拥有的窗口。把它显示在其他窗口的顶部是一件糟糕的事情,通常是有效的,但有时却不行。当它是一个消息框时,对用户来说尤其痛苦


据我所知,只有三种情况下,您的一个窗口可能会失去焦点,消失在另一个应用程序的窗口后面:

  • 调用SetForegroundWindow()的程序,将其中一个窗口推到前台。自Win98以来,Windows针对这一问题采取了具体的应对措施,Win98是一种经常发生的用户界面犯罪。它仅在一段时间内未在活动窗口中检测到任何输入事件时才允许此操作。否则,它将闪烁任务栏按钮。当然,程序员已经找到了应对措施。大约两年前,Windows Update的一个版本开始这样做。幸运的是,负责这件事的程序员被带到外面枪毙了

  • 自我造成的那种,由短时间内没有任何窗口能够接收焦点触发。Windows窗口管理器被迫查找另一个窗口以将焦点提供给。这很可能是一个“壳窗口”,只要方便。在显示对话框并隐藏主窗口或自己禁用主窗口时,通常会出现这种情况。并在对话框关闭时再次显示。那太晚了,还有一小部分时间没有窗口可以获得焦点。顺便说一句,它不会重复得很好,一点也不会,因为它取决于其他可用窗口

  • 在线程上显示顶级非自有窗口。这样的窗口不能与应用程序中的其他窗口具有任何Z顺序关系,并且只有桌面窗口作为父窗口。它与任何其他窗口竞争,包括资源管理器拥有的窗口。把它显示在其他窗口的顶部是一件糟糕的事情,通常是有效的,但有时却不行。当它是一个消息框时,对用户来说尤其痛苦


对不起,糊涂虫:窗户是什么?带开始按钮的浏览器任务栏?抱歉,困惑:shellwindow是什么?“资源管理器”任务栏是否带有“开始”按钮?