System.Windows.Window调用Show()后显示在父窗口后方,如何设置使其始终前置?
解决方案
注意:你当前使用的是WPF框架而非WinForm,
System.Windows.Window是WPF的窗口基类,WinForm的窗口基类为System.Windows.Forms.Form,二者的API逻辑有一定差异。
根据你要实现的效果,可选择以下两种方案:
场景1:需要窗口始终置顶在所有应用窗口最前方
直接设置窗口的Topmost属性为true即可,代码示例:
var form = new MyForm(); form.Topmost = true; form.Show();
场景2:仅需要窗口显示在当前应用的父窗口上层,不需要覆盖其他应用窗口
你遇到的Owner属性只能接收Window类型的问题,可以通过WPF提供的Window.GetWindow()方法,从你的UserControl实例获取它所属的顶层Window对象,再赋值给Owner即可,代码示例:
// 假设currentUserControl是你当前作为父容器的UserControl实例 Window parentWindow = Window.GetWindow(currentUserControl); var form = new MyForm(); form.Owner = parentWindow; form.Show();
设置Owner之后,子窗口会默认显示在父窗口上层,最小化父窗口时子窗口也会同步隐藏,符合常规的父子窗口交互逻辑。
内容的提问来源于stack exchange,提问作者sandy
相关产品推荐
相关产品推荐

