开发者

C# Creating window - Defining Parent window

开发者 https://www.devze.com 2023-03-08 20:50 出处:网络
I want create using C# window with setted parent to m开发者_如何转开发y defined handle, this is a other process window handle.

I want create using C# window with setted parent to m开发者_如何转开发y defined handle, this is a other process window handle.

Anyone know how to do this?

Greetings,


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消