我有一个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;
}
}
答案 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;
这会将您的面板拉伸到全屏。