我的代码在关闭时会保留表单大小和位置,并在加载时对表单进行定位和调整大小。
我想考虑到在加载时,持久位置可能超出了屏幕的范围。在单个显示器设置中易于测试,但对于多个显示器,我该如何测试。我不知道屏幕是水平还是垂直设置等。不知怎的,我需要确定所有屏幕的组合区域,并找出表格是否保持位置是否在该区域内。
答案 0 :(得分:1)
查看C#: How to make a form remember its Bounds and WindowState (Taking dual monitor setups into account)
答案 1 :(得分:1)
用于记忆和恢复窗口状态的一对好函数是GetWindowPlacement
和SetWindowPlacement
。 GetWindowPlacement
不仅检索普通窗口的当前状态和位置,而且,对于最大化窗口,检索它在最大化之前的位置。
出于您的目的,SetWindowPlacement
非常有用,因为如果要求将窗口恢复到屏幕之外,就知道将窗口轻推到最近的屏幕上:
如果
WINDOWPLACEMENT
中指定的信息导致窗口完全脱离屏幕,系统将自动调整坐标以便窗口可见,同时考虑到屏幕分辨率和多个监视器配置的变化
不幸的是我不知道这两个函数的现成.NET等价物,尽管它们很容易通过P / Invoke调用(cf http://pinvoke.net)。