保持双显示器的形式位置和大小

时间:2011-01-21 16:26:25

标签: c# .net winforms multiple-monitors

我的代码在关闭时会保留表单大小和位置,并在加载时对表单进行定位和调整大小。

我想考虑到在加载时,持久位置可能超出了屏幕的范围。在单个显示器设置中易于测试,但对于多个显示器,我该如何测试。我不知道屏幕是水平还是垂直设置等。不知怎的,我需要确定所有屏幕的组合区域,并找出表格是否保持位置是否在该区域内。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

用于记忆和恢复窗口状态的一对好函数是GetWindowPlacementSetWindowPlacementGetWindowPlacement不仅检索普通窗口的当前状态和位置,而且,对于最大化窗口,检索它在最大化之前的位置。

出于您的目的,SetWindowPlacement非常有用,因为如果要求将窗口恢复到屏幕之外,就知道将窗口轻推到最近的屏幕上:

  

如果WINDOWPLACEMENT中指定的信息导致窗口完全脱离屏幕,系统将自动调整坐标以便窗口可见,同时考虑到屏幕分辨率和多个监视器配置的变化

不幸的是我不知道这两个函数的现成.NET等价物,尽管它们很容易通过P / Invoke调用(cf http://pinvoke.net)。