C# Creating window - Defining Parent window
Asked Answered
K

2

6

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,

Kind answered 26/5, 2011 at 22:30 Comment(0)
S
7

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.

Sarah answered 26/5, 2011 at 22:39 Comment(3)
Ok i will try this, but .. this is impossible for Window class? I have already code based on Window with XAML.Kind
I assumed Windows Forms, so this would not be applicable for a WPF Window.Pragmatism
I updated the answer with a possible solution in WPF, but I don't make any guarantees... :)Pragmatism
E
3

I believe the Handle will be read-only; therefore, the .Parent property is read-only. However, the .Owner property has a getter and a setter (ref. MSDN) ... however, you must have a reference to the Parent window.

Without more information, I will not be able to provide much more than that.

If your parent candidate is an unmanaged Window, check this link.

Edelman answered 26/5, 2011 at 22:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.