2010-08-10 64 views
1

我有一個WinForms應用程序。如何在全屏上拉伸面板?

應用程序有menustrip,toolstrip和幾個面板。

我想在全屏上拉伸其中一個面板。我希望該面板涵蓋所有屏幕包含任務欄。

我該怎麼做?

============================================

我用漢斯帕桑特的答案:

public partial class Form1 : Form 
{ 
    Size _panel1Size; 

    public Form1() 
    { 
     InitializeComponent(); 

     _panel1Size = panel1.Size; 
    } 

    void bFullScreen_Click(object sender, EventArgs e) 
    { 
     this.FormBorderStyle = FormBorderStyle.None; 
     this.WindowState = FormWindowState.Maximized; 
     this.panel1.Size = this.ClientSize; 
    } 

    void bGoBack_Click(object sender, EventArgs e) 
    { 
     this.FormBorderStyle = FormBorderStyle.FixedDialog; 
     this.WindowState = FormWindowState.Normal; 

     panel1.Size = _panel1Size; 
    } 
} 

回答

1

獲得一個形式覆蓋任務欄要求它是無國界的。您需要檢測OnResize事件中的窗口狀態更改。類似這樣的:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     panel1Size = panel1.Size; 
     prevState = this.WindowState; 
    } 
    private Size panel1Size; 
    private FormWindowState prevState; 

    protected override void OnResize(EventArgs e) { 
     if (prevState != this.WindowState) { 
      prevState = this.WindowState; 
      if (this.WindowState == FormWindowState.Maximized) { 
       this.FormBorderStyle = FormBorderStyle.None; 
       panel1.Size = this.ClientSize; 
      } 
      else if (this.WindowState == FormWindowState.Normal) { 
       this.FormBorderStyle = FormBorderStyle.Sizable; 
       panel1.Size = panel1Size; 
      } 
     } 
     base.OnResize(e); 
    } 

    private void button1_Click(object sender, EventArgs e) { 
     this.WindowState = FormWindowState.Normal; 
    } 
} 

有一個缺陷,它不會恢復到完全相同的大小。沒有簡單的解決方法。

+0

第二個想法,簡單的解決方法是恢復ClientSize。 – 2010-08-10 15:21:13

+0

我做到了。我在我的問題中添加了我的解決方案(第一篇文章)。你的缺點是什麼意思?我沒有看到任何扭曲。 – nik 2010-08-11 05:49:48

0

在窗體的Load事件添加:

MyPanel.Size = this.Size; 
MyPanel.Location = this.Location; 

這應該您的面板延伸到整個屏幕。