开发者

How to stretch a panel on fullscreen?

开发者 https://www.devze.com 2023-01-10 18:57 出处:网络
I have a WinForms application. Application has menus开发者_StackOverflow社区trip, toolstrip and several panels.

I have a WinForms application.

Application has menus开发者_StackOverflow社区trip, toolstrip and several panels.

I want to stretch one of that panels on fullscreen. I want that panel covers all screen include taskbar.

How do I do it ?

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

I used an answer of 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;
    }
}


Getting a form to cover the taskbar requires it to be borderless. You'll need to detect the window state change in the OnResize event. Something like this:

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

There's a flaw, it won't restore to the exact same size. No easy fix for that.


On Form's Load event add:

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

This should stretch your panel to full screen.

0

精彩评论

暂无评论...
验证码 换一张
取 消