2010-08-10 8 views
1

У меня есть приложение WinForms.Как растянуть панель на полноэкранном режиме?

Приложение имеет menustrip, toolstrip и несколько панелей.

Я хочу растянуть одну из этих панелей на полноэкранном режиме. Я хочу, чтобы панель охватывала все экранные панели задач.

Как это сделать?

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

Я использовал ответ Ханса 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; 
    } 
} 

ответ

1

Getting форму, чтобы покрыть панель задач требует, чтобы быть без полей. Вам нужно будет обнаружить изменение состояния окна в событии 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. –

+0

Я сделал это. Я добавил свое решение к моему вопросу (первый пост). Что вы имеете в виду из-за недостатка? Я не видел никаких искажений. – nik

0

На Load события Form Добавить:

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

Это должно растянуть панель на весь экран.

Смежные вопросы