2009-04-08 94 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!"); 
      } 
     } 

代碼假定爲一種形式。請注意,如果表單完全包含在屏幕上,則此代碼僅打印屏幕包含表單。但根據您的需求,這應該相當簡單。

相關問題