最大化的屏幕忽略任务栏

时间:2009-06-10 12:32:08

标签: .net winforms taskbar

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

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

8 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:6)

我遗漏了一些描述 - 我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然它假设您不想要最大化按钮,而是创建一个自助服务终端风格的应用程序,您不希望用户看到除应用程序屏幕之外的任何内容。不完全是我所期望的,但我认为是有效的。

答案 2 :(得分:3)

在使表格边框最大化之前将其设置为无。

此代码可在单个监视器中使用:

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

我还没有测试双显示器方案,因为此时我还没有这个。 :P

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

您希望表单覆盖任务栏并填满整个屏幕吗?

答案 3 :(得分:3)

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

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

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

答案 4 :(得分:3)

  

我遗漏了一些描述 - 我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然它假设您不想要最大化按钮,而是创建一个自助服务终端风格的应用程序,您不希望用户看到除应用程序屏幕之外的任何内容。不完全是我所期望的,但我认为是有效的。

我遇到了这个问题,并在杰夫的帮助下解决了这个问题。 首先,将windowstate设置为最大化。但不要禁用MaximizeBox 。 然后,如果要禁用MaximizeBox,则应以编程方式执行此操作:

private void frmMain_Load(object sender, EventArgs e)
{
   this.MaximizeBox = false;
}

答案 5 :(得分:2)

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


...cut...
  public partial class Form2 : Form
    {
        public Form2()
        {
          // 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; 


      ....
          InitializeComponent();
        }

...cut...

答案 6 :(得分:0)

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

        Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _
                                  My.Computer.Screen.WorkingArea.Size.Height - 1)

答案 7 :(得分:0)

我的工作如下:

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

    this.Bounds = Screen.PrimaryScreen.WorkingArea;