C# создание окна-определение родительского окна

Я хочу создать с помощью C# окно с установленным родителем в мой определенный дескриптор, это другой дескриптор окна процесса.

кто-нибудь знает, как это сделать?

С ПРИВЕТОМ,

2 ответов


если я правильно понял ваш вопрос, вы должны быть в состоянии достичь того, что вы хотите, используя что-то вроде этого:

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));
}

это обернется MainForm дочернее окно указанного окна, которое всегда появляется над ним. Я использую ShowDialog в Примере, но это должно также работать для Show. Это специфично для Windows Forms.

в WPF вы можете попробовать следующее:

var helper = new WindowInteropHelper(/* your Window instance */);

helper.Owner = // Set with handle for the parent

я быстро попробовал это после показа окна WPF, и мне показалось работать, как ожидалось, но знания WPF не так велики.


Я считаю, что ручка будет только для чтения, поэтому .Parent свойство доступно только для чтения. Однако .Owner свойство имеет геттер и сеттер (ref. В MSDN) ... однако необходимо иметь ссылку на родительское окно.

без дополнительной информации, я не смогу предоставить гораздо больше.

Если ваш родительский кандидат является неуправляемые окно, проверить это ссылке.