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 に答える