8

我有一个设置为Maximized的表单,但由于某种原因,它忽略了任务栏并最大化到整个屏幕。这是典型的吗?有解决方法吗?

我正在运行带有双显示器设置的 Windows XP(第一个/主窗口中的任务栏)。

4

8 回答 8

14

如果您使用的是 FormBorderStyle.None ,那么确保它在最大化时不会覆盖任务栏非常简单:

this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;

它可能适用于其他边框样式,并且可能是确保表单不覆盖任务栏的最干净的方法。

于 2009-11-05T18:45:55.813 回答
7

我在描述中遗漏了一件事——我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然,它假设如果您不想要最大化按钮,您正在创建一个信息亭风格的应用程序,您不希望您的用户看到除应用程序屏幕之外的任何内容。不完全是我所期望的,但我猜是有效的。

于 2009-06-10T12:44:49.683 回答
3

在最大化之前将表单边框设置为无。

此代码将在单个监视器中工作:

private void Form1_Load(object sender, EventArgs e)
{
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
}

我还没有测试双显示器场景,因为我现在没有这个。:P

编辑:我没有得到它“最大化屏幕忽略任务栏”。忽略是什么意思?

你想让你的表单覆盖任务栏并填满整个屏幕吗?

于 2009-06-10T12:37:26.033 回答
3

如果您不想重新启用最大化按钮,您可以手动设置窗口的大小:

private void Maximize()
{
    Screen screen = Screen.FromPoint(this.Location);
    this.Size = screen.WorkingArea.Size;
    this.Location = Point.Empty;
}

(WorkingArea是应用程序可以使用的屏幕区域,不包括TaskBar等工具栏)

于 2009-06-10T15:18:53.210 回答
3

我在描述中遗漏了一件事——我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然,它假设如果您不想要最大化按钮,您正在创建一个信息亭风格的应用程序,您不希望您的用户看到除应用程序屏幕之外的任何内容。不完全是我所期望的,但我猜是有效的。

我遇到了这个问题,并在 Jeff 的帮助下解决了这个问题。首先,将 windowstate 设置为Maximized。但不要禁用 MaximizeBox。然后,如果您希望禁用 MaximizeBox,您应该以编程方式执行此操作:

private void frmMain_Load(object sender, EventArgs e)
{
   this.MaximizeBox = false;
}
于 2013-03-18T13:35:06.013 回答
2

任务栏可以停靠在左侧、顶部、底部、右侧。如果您想要最大化窗口而没有覆盖任务栏,请使用以下代码:

...切...
  公共部分类Form2:表格
    {
        公共表格2()
        {
          // 将默认起始位置设置为手动  
          this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;


          // 设置窗体的位置和大小。  
          this.Bounds = Screen.PrimaryScreen.WorkingArea;


      ……
          初始化组件();
        }

...切...
于 2011-08-19T09:58:23.383 回答
0

当您将表单边框样式设置为无时,表单将隐藏任务栏。要解决这个问题,您必须手动设置表单的 MaximumSize。如果 Windows 自动隐藏任务栏,表单甚至会覆盖隐藏的任务栏!为了解决这个问题,将最大尺寸高度降低一个像素(如果您的任务栏位于底部)!

        Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _
                                  My.Computer.Screen.WorkingArea.Size.Height - 1)
于 2013-03-06T14:22:22.487 回答
0

我所做的是以下内容:

  • 将 MaximizeBox 属性设置为 true
  • 将 WindowState 设置为最大化
  • 在表单的构造函数中,写了以下内容:

    this.Bounds = Screen.PrimaryScreen.WorkingArea;

于 2019-02-17T09:40:45.890 回答