Search code examples
c#wpfwindowscreatewindow

C# Creating window - Defining Parent window


I want create using C# window with setted parent to my defined handle, this is a other process window handle.

Anyone know how to do this?

Greetings,


Solution

  • If I understood your question correctly you should be able to achieve what you want by using something like this:

    class Win32Window : IWin32Window
    {
        IntPtr handle;
    
        public Win32Window(IntPtr handle) { this.handle = handle; }
    
        public IntPtr Handle
        {
            get { return this.handle; }
        }
    }
    
    static void Main()
    {
        IntPtr targetParent = // Get handle to the parent window
    
        new MainForm().ShowDialog(new Win32Window(targetParent));
    }
    

    This will turn MainForm a child window of the specified window making it always appear above it. I use ShowDialog in the example, but this should also work for Show. This is specific for Windows Forms.

    In WPF you can try the following:

    var helper = new WindowInteropHelper(/* your Window instance */);
    
    helper.Owner = // Set with handle for the parent
    

    I quickly tried this after showing the WPF window and it seemed to work as expected, but WPF knowledge is not that great.