所以我有两种形式,mainform和extraform 当mainform初始化时,extraform设置始终移动到mainform的右侧 有时,mainform会占用两个显示器,并且从屏幕上推出的extraform永远不会被再次看到。我想尽可能防止这种情况发生。我怎么能这样做?它必须支持双显示器,它们之间可能有或没有距离(即屏幕1是屏幕2左侧20px)。
我该怎么做?
答案 0 :(得分:6)
您可以使用Screen类来确定窗口相对于桌面的位置。 Screen类有一个FromRectangle方法,因此你可以找出你应该在哪个屏幕上放置你的Form(通过传递你的表单的Bounds属性)。
每个Screen对象都有一个Bounds属性,您可以使用该属性来比较窗口的位置和大小,并相应地调整它们。
答案 1 :(得分:1)
这取决于当推出extraform超出屏幕范围时你想要发生什么。
但是,要了解它是否被推迟,使用System.Windows.Forms.Screens类非常简单。然后你可以像这样进行边界检查:
foreach (var screen in Screen.AllScreens)
{
if(screen.Bounds.Contains(this.Bounds))
{
Console.WriteLine("Device "+screen.DeviceName+" contains form!");
}
}
代码假设处于某种形式。请注意,如果表单完全包含在屏幕上,此代码仅打印屏幕包含表单。但根据您的需要,这应该很容易修复。
答案 2 :(得分:0)
也许您表单中的DesktopLocation属性可以为您提供有关正在发生的事情的线索