【问题标题】:Set parent to wpf window将父级设置为 wpf 窗口
【发布时间】:2014-11-03 05:01:17
【问题描述】:

之前我们使用用户控件来显示模式对话框。 现在决定将其实现为 wpf 窗口。 我有一个问题。 我想将窗口的父级设置为我的 modaldialogwindow 的构造函数。 我知道我的父窗口的 hwnd(可以通过进程名称获取它) 而且我不知道如何将子窗口(我的模态对话框)的 hwnd 放入它的 const 中。

或者我需要像这样为这个窗口设置父级

    var window = new ModalDialogWindow(Properties.Resources.ChangeLabelPartDialogTitle, ChangeLabelPartDialog);
Setparent(Childhwnd,parenthwnd);
           window.ShowDialog();

但我也不知道在showdialog()方法之前如何获取这个窗口的hwnd

【问题讨论】:

  • 能否在 ModalDialogWindow 的构造函数中添加一个参数,以传入生成对话框的窗口的值?
  • 你为什么知道hwnd?您可以通过将其 Owner 属性设置为父窗口来直接设置子窗口的所有者。
  • 这是第一个解决方案。但它在我们的情况下不起作用。当模态对话框失去它的父(所有者)时,我们会遇到这种情况,这就是我决定使用 winapi 的原因

标签: c# wpf


【解决方案1】:

父窗口的句柄就是你所需要的。要为您的对话框窗口设置父级,您可以使用 System.Windows.Interop.WindowInteropHelper 类,如下面的代码所示:

public partial class ModalDialogWindow : Window
{
    public ModalDialogWindow(IntPtr parentWindowHandle)
    {
        InitializeComponent();

        var interop = new WindowInteropHelper(this);
        interop.EnsureHandle();
        // this is it
        interop.Owner = parentWindowHandle;
    }
}

【讨论】:

    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2011-02-05
    • 2020-11-14
    相关资源
    最近更新 更多