【问题标题】:.Net/Winforms, Dual monitor - Borderless Window - Maximizing doesn't work.Net/Winforms,双显示器 - 无边框窗口 - 最大化不起作用
【发布时间】:2010-12-13 08:36:18
【问题描述】:

我有一个问题没有在

上回答

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/fa521007-f317-48f1-9cdd-de2dbcb17aa8

(最后的帖子是我的帖子)。 StackOverflow 是更好的论坛,所以你能帮助我吗:)

简单地说:

  • 双显示器配置,右侧主显示器分辨率较低,左侧显示器分辨率较高(低:1280x1024;高:1680x1050)。最大化更大的窗口时,窗口大于监视器(仅在左侧监视器上有效)
  • 处理无边框窗口基类
  • 最大化实际客户区无法按预期工作。通过添加 WndProc 钩子并摆弄大小参数来解决。多显示器支持增加了一些问题,因为最大化似乎依赖于 MaxTrackSize 而不是 MaxSize。这似乎仅在主显示器小于第二显示器时才会发生

我在规范中找到的东西:

http://msdn.microsoft.com/en-us/library/ms632605(v=VS.85).aspx

对于具有多个显示器的系统, ptMaxSize 和 ptMaxPosition 成员描述最大尺寸 和窗口的位置 主监视器,即使窗口 最终最大化到二次 监视器。在这种情况下,窗口 经理将这些值调整为 弥补之间的差异 主监视器和监视器 显示窗口。因此,如果用户 保留 ptMaxSize 不变,一个窗口 在比主显示器更大的显示器上 监视器最大化到的大小 更大的显示器。

因此,如果我理解正确的话,当任务栏放置在不将其隐藏在最大化窗口下时,不可能以更高的分辨率在屏幕上最大化?

干杯,jbk

【问题讨论】:

    标签: c# .net winforms forms maximize


    【解决方案1】:

    您可以实现自己的“最大化”:

    1. 使用Screen.FromControl 确定您的表单驻留在哪个屏幕上
    2. 根据屏幕的偏移量和大小设置Form的偏移量和大小。
    3. 您可以根据需要使用 Screen 的 WorkingArea(桌面区域)或 Bounds(带有工具栏的整个屏幕)。

    *如果你想隐藏工具栏并成为事实上的“全屏”,我认为你需要将表单设置为 TopMost。

    【讨论】:

      【解决方案2】:

      这对我有用:

      1. FormBorderStyle 设置为 FixedSingle - 可能也适用于其他样式!= ,尚未测试...
      2. WindowState 设置为 FormWindowState.Maximized
      3. FormBorderStyle 重置为 None

      至少,它适用于纯 WinForms 的东西,而无需求助于 WinAPI

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 2010-10-05
        • 2010-12-24
        • 1970-01-01
        • 2012-09-30
        • 2012-11-05
        相关资源
        最近更新 更多