我有一个父窗口,其所有者通过WindowInteropHelper设置。 在这种情况下,Parent.Owner等于null。 有没有办法让窗体的句柄拥有窗口?
我需要这个用于对话窗口。当我尝试将关闭的对话框窗口设置为所有者时,我得到了异常。 因此,我想将对话框的所有者设置为另一个对话框的所有者。但它是WinForm和DialogWindow.Owner等于null。
WinForm(通过WindowInteropHelper-> WPF父对话框(已关闭) - > WPF子对话框
答案 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);
}