2011-01-28 14 views
3

サー、 私は3つのマディチャイルドフォームを持っています。私はすべてのフォームの位置を修正したい。つまり、私がフォームを移動させないようにしたいのですが、私が定める位置にフォームを表示する必要があります。これを達成するための方法 .. ..Mdichildフォームの位置を固定する方法は?

答えて

0

この

ます。private void childForm_LocationChanged(オブジェクト送信者、EventArgsの電子)あなたが設定

{ 

     this.Location = new Point(x, y); //give fixed postion as you want 
    } 
1

をお試しください... 感謝を返信してください使用してフォームの位置を上に移動します。

this.WindowState = FormWindowState.Normal; 
this.StartPosition = FormStartPosition.CenterScreen; 

独自の座標を使用して、フォームのOnMove methidを無効にすることができる移動を防止するために使用この

this.Bounds = new Rectangle(new Point(50,50) , this.Size); 

を固定している場合

protected override void OnMove(EventArgs e) 
     { 
      this.Bounds = this.RestoreBounds; 
     } 
1

デフォルトWM_NCHITTESTの結果を強制することができますハンドラ。

WM_NCHITTESTメッセージは、ウィンドウの非クライアント領域のうち、ユーザーがクリックした部分をWindowsに通知します。これは、例えば、ウィンドウのサイズを変更するか、閉じるボタンをクリックします。

Windowsは、ユーザーがウィンドウをドラッグしたりサイズを変更したい伝えることができないように、デフォルトの結果を強制することができます。

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    protected override void WndProc(ref Message m) 
    { 
     base.WndProc(ref m); 

     if (m.Msg == WM_NCHITTEST) 
     { 
      switch ((HitTestValues)m.Result) 
      { 
       case HitTestValues.HTBORDER: 
       case HitTestValues.HTBOTTOM: 
       case HitTestValues.HTBOTTOMLEFT: 
       case HitTestValues.HTBOTTOMRIGHT: 
       case HitTestValues.HTCAPTION: 
       case HitTestValues.HTGROWBOX: 
       case HitTestValues.HTLEFT: 
       case HitTestValues.HTRIGHT: 
       case HitTestValues.HTTOP: 
       case HitTestValues.HTTOPLEFT: 
       case HitTestValues.HTTOPRIGHT: 
        m.Result = (IntPtr)HitTestValues.HTNOWHERE; 
        break; 
      } 
     } 
    } 

    private const int WM_NCHITTEST = 0x84; 

    enum HitTestValues 
    { 
     HTERROR = -2, 
     HTTRANSPARENT = -1, 
     HTNOWHERE = 0, 
     HTCLIENT = 1, 
     HTCAPTION = 2, 
     HTSYSMENU = 3, 
     HTGROWBOX = 4, 
     HTMENU = 5, 
     HTHSCROLL = 6, 
     HTVSCROLL = 7, 
     HTMINBUTTON = 8, 
     HTMAXBUTTON = 9, 
     HTLEFT = 10, 
     HTRIGHT = 11, 
     HTTOP = 12, 
     HTTOPLEFT = 13, 
     HTTOPRIGHT = 14, 
     HTBOTTOM = 15, 
     HTBOTTOMLEFT = 16, 
     HTBOTTOMRIGHT = 17, 
     HTBORDER = 18, 
     HTOBJECT = 19, 
     HTCLOSE = 20, 
     HTHELP = 21 
    } 
} 

プレーをあなたのswitchにしたい値と少し周りステートメント。たとえば、フォームの最小化/最大化ボタンを無効にするか、switchステートメントに追加することもできます。

関連する問題