2

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

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

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

4

1 回答 1

5

要获取拥有特定 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);
}
于 2012-10-25T13:03:50.123 回答