如何在全屏上拉伸面板?

时间:2010-08-10 12:55:06

标签: winforms

我有一个WinForms应用程序。

应用程序有menustrip,toolstrip和几个小组。

我想在全屏上拉伸其中一个面板。我希望该面板涵盖所有屏幕,包括任务栏。

我该怎么做?

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

我使用了Hans Passant的回答:

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;
    }
}

2 个答案:

答案 0 :(得分: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;
    }
}

有一个缺陷,它不会恢复到完全相同的大小。没有简单的解决方法。

答案 1 :(得分:0)

在表格的Load事件中添加:

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

这会将您的面板拉伸到全屏。