我有一个设置为Maximized的表单,但由于某种原因,它忽略了任务栏并最大化到整个屏幕。这是典型的吗?有解决方法吗?
我正在运行带有双显示器设置的 Windows XP(第一个/主窗口中的任务栏)。
如果您使用的是 FormBorderStyle.None ,那么确保它在最大化时不会覆盖任务栏非常简单:
this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;
它可能适用于其他边框样式,并且可能是确保表单不覆盖任务栏的最干净的方法。
我在描述中遗漏了一件事——我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然,它假设如果您不想要最大化按钮,您正在创建一个信息亭风格的应用程序,您不希望您的用户看到除应用程序屏幕之外的任何内容。不完全是我所期望的,但我猜是有效的。
在最大化之前将表单边框设置为无。
此代码将在单个监视器中工作:
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
我还没有测试双显示器场景,因为我现在没有这个。:P
编辑:我没有得到它“最大化屏幕忽略任务栏”。忽略是什么意思?
你想让你的表单覆盖任务栏并填满整个屏幕吗?
如果您不想重新启用最大化按钮,您可以手动设置窗口的大小:
private void Maximize()
{
Screen screen = Screen.FromPoint(this.Location);
this.Size = screen.WorkingArea.Size;
this.Location = Point.Empty;
}
(WorkingArea是应用程序可以使用的屏幕区域,不包括TaskBar等工具栏)
我在描述中遗漏了一件事——我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然,它假设如果您不想要最大化按钮,您正在创建一个信息亭风格的应用程序,您不希望您的用户看到除应用程序屏幕之外的任何内容。不完全是我所期望的,但我猜是有效的。
我遇到了这个问题,并在 Jeff 的帮助下解决了这个问题。首先,将 windowstate 设置为Maximized。但不要禁用 MaximizeBox。然后,如果您希望禁用 MaximizeBox,您应该以编程方式执行此操作:
private void frmMain_Load(object sender, EventArgs e)
{
this.MaximizeBox = false;
}
任务栏可以停靠在左侧、顶部、底部、右侧。如果您想要最大化窗口而没有覆盖任务栏,请使用以下代码:
...切... 公共部分类Form2:表格 { 公共表格2() { // 将默认起始位置设置为手动 this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; // 设置窗体的位置和大小。 this.Bounds = Screen.PrimaryScreen.WorkingArea; …… 初始化组件(); } ...切...
当您将表单边框样式设置为无时,表单将隐藏任务栏。要解决这个问题,您必须手动设置表单的 MaximumSize。如果 Windows 自动隐藏任务栏,表单甚至会覆盖隐藏的任务栏!为了解决这个问题,将最大尺寸高度降低一个像素(如果您的任务栏位于底部)!
Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _
My.Computer.Screen.WorkingArea.Size.Height - 1)
我所做的是以下内容:
在表单的构造函数中,写了以下内容:
this.Bounds = Screen.PrimaryScreen.WorkingArea;