2013-07-04 160 views
0

我想創建一個新窗體,它被設置爲最大化。它應該顯示標題欄和任務欄。到目前爲止這不是一個大問題。當我設置this.MaximizeBox = false;標題欄上的按鈕被禁用,但如果我拖動或雙擊標題欄,窗體進入窗口模式(在Windows 7上測試)。防止窗體進入窗口模式

設置MinimumSizeMaximumSize到相同的值是不成功的。

+0

可能重複的[如何使WinForms應用程序全屏幕](http://stackoverflow.com/questions/505167/how-do-i-make-a-winforms-app-go-全屏) – 2013-07-04 07:51:58

+0

正如我所提到的標題欄應該是可見的,它是標題欄導致的問題。 – officer

+0

@officer你希望你的表格最大化,但最大化按鈕被禁用?真奇怪。你的表格是固定的嗎? –

回答

1
public class Form1 { 
    public Form1(){ 
     InitializeComponent(); 
     WindowState = FormWindowState.Maximized; 
     Load += (s,e) => { 
     MaximizeBox = false;   
     }; 
    } 
    bool hitControlButtons; 
    protected override void WndProc(ref Message m) 
    { 
    if ((!hitControlButtons) && (m.Msg == 0xa3 || m.Msg == 0xa1))//WM_NCLBUTTONDBLCLK and WM_NCLBUTTONDOWN 
    {     
     return; 
    } 
    if (m.Msg == 0xA0)//WM_NCMOUSEMOVE 
    { 
     int wp = m.WParam.ToInt32();     
     hitControlButtons = wp == 8 || wp == 20 || wp == 9;//Mouse over MinButton, CloseButton, MaxButton        
    } 
    base.WndProc(ref m);    
    } 
} 
+0

這正是我得到的,但是如果我拖動或雙擊標題欄,窗體仍會進入窗口模式。 – officer

+0

@officer對不起,我沒有注意到你的話的細節。我用一個工作解決方案更新了我的答案。 –

+0

謝謝,現在工作幾乎沒問題。問題是表單現在在任務欄後面,所以我在停靠控件時遇到了一些問題。爲了解決這個問題,我將'MaximumSize'設置爲更小的高度,但這有點髒。有沒有更好的方法來實現這一點? – officer