Winforms最大化窗口带边框无隐藏任务栏

时间:2012-10-09 22:33:19

标签: c# .net winforms

我尝试使用自定义关闭和最小化按钮创建无边框表单。但是,当将边框设置为none并且窗口状态设置为最大化时,似乎会导致窗体隐藏任务栏,这不是我想要的。 请注意,我使用的是Windows 7,我在这里和其他地方读过几个答案似乎对我没用,任务栏总是被隐藏起来。下面列出了一些没有运气的事情:

  • this.WindowState = FormWindowState.Maximized; this.FormBorderStyle = FormBorderStyle.None; this.TopMost = true;

  • Screen screen = Screen.FromPoint(this.Location); this.Size = screen.WorkingArea.Size; this.Location = Point.Empty;

  • this.Bounds = Screen.PrimaryScreen.WorkingArea;

5 个答案:

答案 0 :(得分:4)

我想这就是你要找的东西

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

check this

答案 1 :(得分:1)

这是最简单的解决方案:

this.Width = Screen.PrimaryScreen.Bounds.Width;
this.Height = Screen.PrimaryScreen.Bounds.Height - 40;

this.Location = new Point();

this.StartPosition = FormStartPosition.Manual;

在这个例子中,我认为任务栏是可见的,任务栏位于底部。您可以阅读此问题/答案How can I determine programmatically whether the Windows taskbar is hidden or not?,以便通过自动检测任务栏状态扩展我的示例。

以下是如何确定任务栏大小的示例:How do I get the taskbar's position and size?

根据我的决议,任务栏大小为40。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

这似乎是你告诉表单展示的行为 - 如果你告诉它是最顶层的并且明确地将界限设置到整个屏幕它将覆盖任务栏。 (这通常在POS和触摸屏应用程序中完成)

尝试设置FormWindowState.Maximized,而不是告诉边界填满整个屏幕。

答案 4 :(得分:0)

只需将起始位置设置为手动,并将属性MaximizeBox设置为true。 当通过单击最大化按钮加载和最大化表单时,您可以拥有任务栏!