Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set a Wpf Window as the Owner of a Winforms Form

Tags:

c#

winforms

wpf

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.

like image 272
Patrick Klug Avatar asked Jul 08 '09 01:07

Patrick Klug


People also ask

Can you mix WPF and WinForms?

Yes you can, both Windows Forms within a WPF application, and WPF controls within Windows Forms.

How do I add WPF control to Windows form?

Add a WPF control to a Windows FormOpen Form1 in the Windows Forms Designer. In the Toolbox, find the tab labeled WPFUserControlLibrary WPF User Controls. Drag an instance of UserControl1 onto the form. An ElementHost control is created automatically on the form to host the WPF control.


1 Answers

Use this method:

[DllImport("user32.dll")]

private static extern int SetWindowLong(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)
{
    WindowInteropHelper helper = new WindowInteropHelper(owner);
    SetWindowLong(new HandleRef(form, form.Handle), -8, helper.Handle.ToInt32());
}
like image 59
Patrick Klug Avatar answered Sep 28 '22 06:09

Patrick Klug