tags:

views:

665

answers:

1

How to set a System.Windows.Window as the Owner of a System.Windows.Forms.Form?

After I searched for this for a while only to realize that I already have the answer in one of my utils classes I decided to put the answer on stackoverflow. Hopefully someone finds this useful.

+1  A: 

Use this method:

[System.Runtime.InteropServices.DllImport("user32.dll")]

private static extern int SetWindowLong(System.Runtime.InteropServices.HandleRef hWnd, int nIndex, int dwNewLong);

/// <summary>
/// sets the owner of a System.Windows.Forms.Form to a System.Windows.Window
/// </summary>
/// <param name="form"></param>
/// <param name="owner"></param>
public static void SetOwner(System.Windows.Forms.Form form, System.Windows.Window owner)
{
    System.Windows.Interop.WindowInteropHelper helper = new System.Windows.Interop.WindowInteropHelper(owner);
    SetWindowLong(new System.Runtime.InteropServices.HandleRef(form, form.Handle), -8, helper.Handle.ToInt32());
}
Patrick Klug