2009-04-08 91 views
0

所以我有两种形式,mainform和extraform。
当mainform初始化时,extraform被设置为始终移动到mainform的右边
有时mainform会占用这两个监视器,并且extraform被从屏幕上推开,永远不会再被看到。如果可能,我想尽量避免这种情况。我该怎么做?它必须支持双显示器,它们之间可能有或没有距离(即屏幕1在屏幕2左边20px)。如何判断我的表单是否在屏幕之外显示?

我该怎么做?

回答

6

您可以使用Screen类来计算窗口相对于桌面的位置。 Screen类有一个FromRectangle方法,所以你可以找出你应该在哪个屏幕上放置你的表单(通过传递你的表单的Bounds属性)。

每个Screen对象都有一个Bounds属性,您可以用它来比较窗口的位置和大小,并相应地调整它们。

0

也许在你的窗体的DesktopLocation属性可以给你一个什么与你与他们发生

1

这取决于你想要当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!"); 
      } 
     } 

代码假定为一种形式。请注意,如果表单完全包含在屏幕上,则此代码仅打印屏幕包含表单。但根据您的需求,这应该相当简单。

相关问题