Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不使用最顶层属性的情况下将模态对话框置于前端_C#_Wpf_Winforms_Dialog_Modal Dialog - Fatal编程技术网

C# 在不使用最顶层属性的情况下将模态对话框置于前端

C# 在不使用最顶层属性的情况下将模态对话框置于前端,c#,wpf,winforms,dialog,modal-dialog,C#,Wpf,Winforms,Dialog,Modal Dialog,我正在使用ShowDialog(在System.Windows.Window上)向用户显示确认样式的对话框窗口。我从系统托盘菜单选项执行此操作。我的问题是,它的启动本身隐藏在windows下。如果我使用TopMost,它在引起用户注意方面是很好的,但在其他方面使用TopMost太过侵入性。我不想强制对话框始终位于其他窗口的顶部 在调用ShowDialog之前,我尝试了各种方式的选项,如焦点、激活、BringIntoView,试图让用户注意到该对话框,但没有效果。除了使用TopMost,我还有其他

我正在使用ShowDialog(在System.Windows.Window上)向用户显示确认样式的对话框窗口。我从系统托盘菜单选项执行此操作。我的问题是,它的启动本身隐藏在windows下。如果我使用TopMost,它在引起用户注意方面是很好的,但在其他方面使用TopMost太过侵入性。我不想强制对话框始终位于其他窗口的顶部


在调用ShowDialog之前,我尝试了各种方式的选项,如焦点、激活、BringIntoView,试图让用户注意到该对话框,但没有效果。除了使用TopMost,我还有其他选择吗?我确实希望保持对话框的模态行为。

我遇到的问题的关键是设置窗口。在调用窗口之前激活。ShowDialog没有效果(焦点也没有,等等)。相反,在调用ShowDialog之前,我将一个事件处理程序连接到ContentRendered事件并在中激活,这样它就具有了所需的效果,即直接将窗口置于前面,但仍然允许用户在其上拖动其他窗口

window.ContentRendered += (sender, eventArgs) => window.Activate();
window.ShowDialog();

您可以使用并指定Z顺序。。。你到底想完成什么?启动时,我希望对话框显示在所有其他窗口之上。如果他们将另一个窗口(例如,他们的outlook)置于对话框窗口之上,则该窗口应位于该窗口的后面。好的,设置最顶层有什么问题?只要把它设为真,然后设为假。正如我所说的,它的侵入性太强了,你不能在它上面移动任何其他窗口。我在我现在提供的答案中找到了答案。无论如何,谢谢。请把你的解决方案作为你自己问题的答案。这样,未来的读者可以从这篇文章中受益。