如果通过WindowInteropHelper设置其所有者,如何获取窗口的所有者?

时间:2012-10-25 12:24:05

标签: c# wpf

我有一个父窗口,其所有者通过WindowInteropHelper设置。 在这种情况下,Parent.Owner等于null。 有没有办法让窗体的句柄拥有窗口?

我需要这个用于对话窗口。当我尝试将关闭的对话框窗口设置为所有者时,我得到了异常。 因此,我想将对话框的所有者设置为另一个对话框的所有者。但它是WinForm和DialogWindow.Owner等于null。

WinForm(通过WindowInteropHelper-> WPF父对话框(已关闭) - > WPF子对话框

1 个答案:

答案 0 :(得分:4)

要获取拥有特定WPF窗口的WinForms表单,您可以使用以下代码:

IntPtr ownerFormHandle = new WindowInteropHelper(wpfWindow).Owner

要获取拥有特定窗口(WinFroms或WPF)的任何窗口(WinFroms或WPF),您可以使用以下代码:

IntPtr ownerHandle = WinAPI.GetWindow(handle, WinAPI.GW_OWNER);
//...
public static class WinAPI {
    public const uint GW_OWNER = 4;
    [System.Runtime.InteropServices.DllImport("User32.dll")]
    public static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);
}