2011-01-28 79 views
3

先生, 我有3 mdichild形式。我想修復所有表格的位置。我的意思是,我想阻止用戶移動窗體,並且窗體必須顯示在我確定的位置。 如何實現這個.. 請回復...... 謝謝..如何修復Mdichild窗體的位置?

回答

0

試試這個

私人無效childForm_LocationChanged(對象發件人,EventArgs的)

{ 

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

你設定通過使用表格的位置

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

如果你有自己的統籌固定使用這個

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

爲了防止移動,你可以覆蓋形式的OnMove methid

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

您可以強制默認WM_NCHITTEST的結果處理程序。

WM_NCHITTEST消息告訴Windows用戶點擊了窗口的非客戶區域的哪一部分。這告訴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聲明中。

相關問題