.Net / Winforms,双显示器 - 无边框窗口 - 最大化不起作用

时间:2010-12-13 08:36:18

标签: c# .net winforms forms maximize

我有一个未在

上回答的问题

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

2 个答案:

答案 0 :(得分:0)

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

  1. 使用Screen.FromControl
  2. 确定表单所在的屏幕
  3. 根据屏幕的偏移和大小设置Forma的偏移量和大小。
  4. 您可以根据需要使用屏幕的WorkingArea(桌面区域)或Bounds(带工具栏的整个屏幕)。
  5. *如果您想要隐藏工具栏并且是“全屏”,我认为您需要将表单设置为TopMost。

答案 1 :(得分:0)

这对我有用:

  1. FormBorderStyle 设置为 FixedSingle - 也可以使用其他样式!= ,尚未测试过...
  2. WindowState 设置为 FormWindowState.Maximized
  3. FormBorderStyle 重置为
  4. 至少,它适用于纯WinForms的东西而不需要使用WinAPI