6

C#定義したハンドルに親が設定されたウィンドウを使用して作成したいのですが、これは別のプロセスウィンドウハンドルです。

誰もがこれを行う方法を知っていますか?

ご挨拶、

4

2 に答える 2

7

私があなたの質問を正しく理解していれば、次のようなものを使用して、あなたが望むものを達成できるはずです:

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 フォームに固有です。

WPF では、次のことを試すことができます。

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

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

WPF ウィンドウを表示した後、すぐにこれを試してみましたが、期待どおりに動作するように見えましたが、WPF の知識はそれほど大きくありません。

于 2011-05-26T22:39:49.957 に答える
3

ハンドルは読み取り専用になると思います。したがって、.Parentプロパティは読み取り専用です。ただし、.Ownerプロパティにはゲッターとセッターがあります(参照 MSDN)...ただし、親ウィンドウへの参照が必要です。

これ以上の情報がなければ、それ以上のものを提供することはできません。

親候補が管理されていないウィンドウの場合は、このリンクを確認してください。

于 2011-05-26T22:39:57.033 に答える