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