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.
Yes you can, both Windows Forms within a WPF application, and WPF controls within Windows Forms.
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.
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());
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With