.net 最大化屏幕忽略任务栏
我有一个表单设置为最大化,但出于某种原因,它忽略了任务栏并最大化了整个屏幕。这是典型的吗?有解决办法吗.net 最大化屏幕忽略任务栏,.net,winforms,taskbar,.net,Winforms,Taskbar,我有一个表单设置为最大化,但出于某种原因,它忽略了任务栏并最大化了整个屏幕。这是典型的吗?有解决办法吗 我使用双监视器设置运行WindowsXP(第一个/主窗口中的任务栏)。在最大化窗体边框之前,将窗体边框设置为“无” 此代码将在单个监视器中工作: private void Form1_Load(object sender, EventArgs e) { this.FormBorderStyle = FormBorderStyle.None; this.WindowState =
我使用双监视器设置运行WindowsXP(第一个/主窗口中的任务栏)。在最大化窗体边框之前,将窗体边框设置为“无” 此代码将在单个监视器中工作:
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是屏幕上可供应用程序使用的区域,不包括任务栏和其他工具栏)如果您使用的是FormBorderStyle。无,则确保最大化时不会覆盖任务栏非常简单:
this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;
它可能适用于其他边框样式,并且可能是确保窗体不覆盖任务栏的最干净的方式。任务栏可以停靠在左侧、顶部、底部和右侧。如果要最大化窗口而不覆盖任务栏,请使用以下代码:
……切。。。
公共部分类表单2:表单
{
公共表格2()
{
//将默认启动位置设置为手动
this.StartPosition=System.Windows.Forms.FormStartPosition.Manual;
//设置窗体的位置和大小。
this.Bounds=Screen.PrimaryScreen.WorkingArea;
....
初始化组件();
}
……切。。。
将窗体边框样式设置为“无”时,窗体将隐藏任务栏。 要解决这个问题,您必须手动设置表单的最大大小。 如果windows自动隐藏任务栏,表单甚至会覆盖隐藏的任务栏! 要解决这个问题,请将最大尺寸高度降低一个像素(如果任务栏位于底部)
我在描述中遗漏了一件事——我关闭了最大化按钮。当我测试重新打开该属性时,任务栏再次出现。显然,它假设如果你不想要最大化按钮,你正在创建一个亭式的应用程序,你不想让你的用户看到除应用程序屏幕以外的任何东西。不完全是什么我想是的,但我想是有效的 我遇到了这个问题,在杰夫的帮助下解决了。 首先,将窗口状态设置为最大化,但不要禁用最大化框。 然后,如果希望禁用MaximizeBox,则应以编程方式执行此操作:
private void frmMain_Load(object sender, EventArgs e)
{
this.MaximizeBox = false;
}
我所做的是:
- 将MaximizeBox属性设置为true
- 将WindowsState设置为最大化
- 在表单的构造函数中,写下以下内容: this.Bounds=Screen.PrimaryScreen.WorkingArea
screen.FromControl(此)
而不是Screen.PrimaryScreen
。如果用户有多个屏幕,您的控件不一定在主屏幕上。不能跨屏幕工作。如果在formOnMove
事件中设置MaximumSize
,您将得到一个在非最大化模式下受限于屏幕宽度的表单(这不是默认行为)。不起作用--sys menu maximize不会调用您的maximize()
method@ZachSaw,当然不会,为什么会呢?这是一种你必须自己调用的方法。当你有系统菜单弹出窗口时,它根本不会显示为最大化状态!
Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _
My.Computer.Screen.WorkingArea.Size.Height - 1)
private void frmMain_Load(object sender, EventArgs e)
{
this.MaximizeBox = false;
}