【问题标题】:Maximizing a window in a multi-screen environment without hiding/blocking the task bar在不隐藏/阻塞任务栏的情况下最大化多屏环境中的窗口
【发布时间】:2013-06-14 08:13:03
【问题描述】:

这是给曾经问过自己“如何在不阻塞任务栏的情况下在多屏设置中最大化窗口”的每个人的帖子。

问题似乎在于,将 MaximizeBoxMinimizeBox 设置为 false 并在多屏环境中以编程方式最大化的窗口覆盖了整个 屏幕,而不仅仅是 Screen.WorkingArea

要仅将窗口最大化到工作区域,需要使用 MaximizeBoxMinimizeBox 属性,如下所示:

// This code should be placed in the Form's ResizeEnd handler

MaximizeBox = MinimizeBox = true;           // Enable both boxes
WindowState = FormWindowState.Maximized;    // Set to maximized
MaximizeBox = MinimizeBox = false;          // Disable both boxes again

因此,窗口将在屏幕上很好地最大化并尊重屏幕的工作区域(不会阻塞任务栏)。

【问题讨论】:

  • 这是个好问题...
  • 我知道这不是一个真正的问题 ;) 但这背后的问题..“我该怎么做”经常弹出,以至于我认为发布它可能会有用
  • 不,这只是讽刺。
  • 想想我以前使用 WinAPI hack 自己计算面积...谢谢!
  • @WiiMaxx 下次会记住你的建议。

标签: c# .net winforms


【解决方案1】:

或者您可以将 this.MaximumSize 设置为新大小(screen.primaryscreen.bounds.width + screen.secondaryscreen.bounds.width,screen.primaryscreen.bounds.height)。

附:我是用手机写的,所以我无法检查语法等……还有你为什么把它作为“问题”发布?

【讨论】:

  • 是的,问题很愚蠢......关于最大尺寸:这无助于最大化隐藏任务栏
  • 哦,好吧 - 但这就是我在 formborderstyle = none 并最大化时所做的,它覆盖了任务栏,并且它工作了。
  • 是的,没有边框没问题,因为你没有边框(它应该只作为标题栏可见,其按钮处于最大化模式):)
  • @Basuro 好吧,对不起 - 误会。作为 stackoverflow 的新手,这是否意味着我删除了我的答案?
  • 不,不要那样做...您的帖子可能对拥有无边框窗口的人有所帮助
【解决方案2】:

我发现使用 ResizeEnd 事件仍然覆盖了任务栏。所以改用 Load 事件;没有隐藏的任务栏。

【讨论】:

  • 确实如此。但这只会在加载表单时最大化表单一次。将表单移动到多屏幕系统上的另一个屏幕不会再次最大化表单。这就是我使用 ResizeEnd 的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2015-12-18
  • 1970-01-01
相关资源
最近更新 更多