我有一个WinForms应用程序,当我登录时设置为全屏模式。
我的问题是它还覆盖了Windows任务栏。我不希望我的应用程序覆盖任务栏。
如何做到这一点?
答案 0 :(得分:27)
我这样做是通过这段代码:
this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea;
this.WindowState = FormWindowState.Maximized;
答案 1 :(得分:19)
这可能是你想要的。它创建了一个“最大化”窗口而不隐藏任务栏。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load( object sender, EventArgs e )
{
FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
Left = Top = 0;
Width = Screen.PrimaryScreen.WorkingArea.Width;
Height = Screen.PrimaryScreen.WorkingArea.Height;
}
}
答案 2 :(得分:4)
我回答了here:
我遗漏了一些描述 - 我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然它假设您不想要最大化按钮,而是创建一个自助服务终端风格的应用程序,您不希望用户看到除应用程序屏幕之外的任何内容。不完全是我所期望的,但我认为是有效的。
我遇到了这个问题,并在杰夫的帮助下解决了这个问题。首先,将windowstate设置为Maximized。但不要禁用MaximizeBox。然后,如果要禁用MaximizeBox,则应以编程方式执行此操作:
private void frmMain_Load(object sender, EventArgs e)
{
this.MaximizeBox = false;
}
答案 3 :(得分:1)
如果最大化不是您想要的,那么您需要通过检查任务栏的位置和大小来自己计算窗口大小:
答案 4 :(得分:1)
如果您有多个屏幕,则必须重置MaximizedBounds的位置:
Rectangle rect = Screen.FromHandle(this.Handle).WorkingArea;
rect.Location = new Point(0, 0);
this.MaximizedBounds = rect;
this.WindowState = FormWindowState.Maximized;
答案 5 :(得分:1)
我不擅长解释,但这是我用来最大化或全屏显示不会掩盖任务栏的winforms的代码。希望能帮助到你。 ^^
private void Form_Load(object sender, EventArgs e)
{
this.Height = Screen.PrimaryScreen.WorkingArea.Height;
this.Width = Screen.PrimaryScreen.WorkingArea.Width;
this.Location = Screen.PrimaryScreen.WorkingArea.Location;
}
答案 6 :(得分:1)
Arcanox's answer对于单个监视器非常有用,但是如果您在除最左边以外的任何屏幕上尝试使用它,它将使表格消失。我改用以下代码。
var workingArea = Screen.FromHandle(Handle).WorkingArea;
MaximizedBounds = new Rectangle(0, 0, workingArea.Width, workingArea.Height);
WindowState = FormWindowState.Maximized;
唯一的区别是我将上下左右的值覆盖为0、0,因为它们在其他屏幕上会有所不同。
答案 7 :(得分:0)
如果您想使用WindowState = Maximized;
,则应首先指明MaximizedBounds
属性最大化的表单的大小限制...
示例:
MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea;
WindowState = FormWindowState.Maximized;
您将表单的大小限制在作为显示器桌面区域的工作区域
答案 8 :(得分:0)
尝试不使用FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
和注释行,如:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load( object sender, EventArgs e )
{
// FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
Left = Top = 0;
Width = Screen.PrimaryScreen.WorkingArea.Width;
Height = Screen.PrimaryScreen.WorkingArea.Height;
}
}
答案 9 :(得分:0)
private void frmGateEntry_Load(object sender, EventArgs e)
{
// set default start position to manual
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
// set position and size to the Form.
this.Bounds = Screen.PrimaryScreen.WorkingArea;
}