C # Создание окна - Определение родительского окна - PullRequest
6 голосов
/ 27 мая 2011

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

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

Привет,

Ответы [ 2 ]

7 голосов
/ 27 мая 2011

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

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не так уж велик.

3 голосов
/ 27 мая 2011

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

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

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

...