2011-06-20 50 views
3

我有一個WinForms應用程序,它在我登錄時設置爲全屏模式。全屏模式,但不包括任務欄

我的問題是它也覆蓋了Windows任務欄。我不希望我的應用程序覆蓋任務欄。

這怎麼辦?

+4

這是全屏的定義。也許你想將其設置爲「最大化」而不是? –

+0

@Evil:你應該回答你的問題。 – Sung

+1

@TheE:我將它設置爲this.windowstate =最大化... – user698065

回答

11

這可能是你想要的。它創建一個「最大化」窗口而不隱藏任務欄。

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

    private void Form1_Load(object sender, EventArgs e) 
    { 
     FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
     Left = Top = 0; 
     Width = Screen.PrimaryScreen.WorkingArea.Width; 
     Height = Screen.PrimaryScreen.WorkingArea.Height; 
    } 
} 
0

如果您已經設置了WindowState = Maximized;確保你已經設置了FormBorderStyle =除None之外的任何東西。如果您設置爲None,它將覆蓋您的任務欄。

3

我不得不回答這個問題here

有一件事我離開了說明 - 我倒是關閉了最大化按鈕。當我測試再次打開該屬性時,任務欄再次出現。顯然,假設您不希望最大化按鈕創建一個自助服務終端式應用程序,您不希望用戶看到除應用程序屏幕以外的任何內容。不完全是我所期望的,但我猜想是有效的。

我有這個問題,傑夫的幫助解決了它。首先,將windowstate設置爲Maximized。但不要禁用MaximizeBox。然後,如果你想MaximizeBox被禁用,你應該這樣做編程:

private void frmMain_Load(object sender, EventArgs e) 
{ 
    this.MaximizeBox = false; 
} 
0

嘗試沒有FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;和註釋行,如:

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

    private void Form1_Load(object sender, EventArgs e) 
    { 
     // FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
     Left = Top = 0; 
     Width = Screen.PrimaryScreen.WorkingArea.Width; 
     Height = Screen.PrimaryScreen.WorkingArea.Height; 
    } 
} 
9

我做的方式,它是通過這個代碼:

this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea; 
this.WindowState = FormWindowState.Maximized; 
+1

我認爲這應該是被批准的答案,因爲上面提供的解決方案不允許正常的Windows狀態更改行爲。 – mohnston

0
private void frmGateEntry_Load(object sender, EventArgs e) 
    { 
     // set default start position to manual 
     this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; 

     // set position and size to the Form. 
     this.Bounds = Screen.PrimaryScreen.WorkingArea; 
    } 
1

如果您有多個屏幕,則必須重置MaximizedBounds的位置:

Rectangle rect = Screen.FromHandle(this.Handle).WorkingArea; 
rect.Location = new Point(0, 0); 
this.MaximizedBounds = rect; 
this.WindowState = FormWindowState.Maximized; 
0

我不擅長解釋,但這是我用來最大化或全屏顯示不覆蓋任務欄的winforms的代碼。希望能幫助到你。 ^^

private void Form_Load(object sender, EventArgs e) 
    { 
     this.Height = Screen.PrimaryScreen.WorkingArea.Height; 
     this.Width = Screen.PrimaryScreen.WorkingArea.Width; 
     this.Location = Screen.PrimaryScreen.WorkingArea.Location; 

    } 
+1

有關此代碼專用答案的一些解釋可能會有所幫助! – Pyves