更新:あなたはまた、ネイティブHWWND
をラップし、そのウィンドウに送信されたウィンドウメッセージを聞くために使用することができ、WinFormsのNativeWindow
classをチェックアウトする場合があります。
は、私はあなたのウィンドウのBの位置(および寸法)(HWND
1)を設定するためのWin32 API関数MoveWindow
が必要になりますと仮定します。このAPI関数は.NET via P/Invokeから呼び出すことができます。
ウィンドウBの現在の位置とサイズを取得するには、さらにGetWindowRect
とP/Invokeを使用して呼び出す必要があります。
次のコードは、箱から出して動作しない場合があります、そしておそらく単純な解決策があるが、それは一緒に上記のリンクを、あなたの出発点を与えるかもしれない:
// the following P/Invoke signatures have been copied from pinvoke.net:
[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hWnd,
int X, int Y,
int nWidth, int nHeight,
bool bRepaint);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(HandleRef hWnd, out RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left; // x position of upper-left corner
public int Top; // y position of upper-left corner
public int Right; // x position of lower-right corner
public int Bottom; // y position of lower-right corner
}
...
System.Windows.Form a = ...;
IntPtr b = ...;
RECT bRect;
GetWindowRect(b, out bRect);
MoveWindow(b,
a.Location.X + 50, b.Location.Y,
bRect.Right - bRect.Left, bRect.Bottom - bRect.Top,
true);
+1よく似ています –
これが大好きです。今はテストすることはできませんが、今晩はそれほど微妙な操作をしなければ動作しないと認められます。ありがとう! – Lazlo