Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存双监视器的窗体位置和大小_C#_.net_Winforms_Multiple Monitors - Fatal编程技术网

C# 保存双监视器的窗体位置和大小

C# 保存双监视器的窗体位置和大小,c#,.net,winforms,multiple-monitors,C#,.net,Winforms,Multiple Monitors,我的代码在表单关闭时保持表单大小和位置,并在加载表单时定位和调整表单大小 我想考虑到,在加载时,持久化位置可能在屏幕边界之外。易于在单个监视器设置中进行测试,但对于多个监视器,如何进行测试。我不知道屏幕是水平设置的还是垂直设置的,等等。不知何故,我需要确定所有屏幕的组合区域,并找出表单的持久化位置是否在该区域内。看看一对用于记忆和恢复窗口状态的好函数是和GetWindowPlacement不仅检索普通窗口的当前状态和位置,而且对于最大化的窗口,检索其在最大化之前的位置 出于您的目的,SetWin

我的代码在表单关闭时保持表单大小和位置,并在加载表单时定位和调整表单大小


我想考虑到,在加载时,持久化位置可能在屏幕边界之外。易于在单个监视器设置中进行测试,但对于多个监视器,如何进行测试。我不知道屏幕是水平设置的还是垂直设置的,等等。不知何故,我需要确定所有屏幕的组合区域,并找出表单的持久化位置是否在该区域内。

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

出于您的目的,
SetWindowPlacement
非常有用,因为如果要求将窗口还原到离屏幕最近的屏幕上,它知道将窗口推到最近的屏幕上:

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


不幸的是,我不知道这两个函数的现成.NET等价物,尽管它们可以通过p/Invoke(cf)直接调用。

Thank的可能副本。我在搜索中没有找到这个。我投票决定结束我的问题。