私のフォームが画面を超えて表示されているかどうかの見分け方
-
06-09-2019 - |
質問
だから私は二つの形式、MainFormというおよびextraformを持っている。
extraformは、メインフォームが
を初期化するとき、常にメインフォームの右に移動設定されています
時には、MainFormをもう一度見られないことを決して画面をオフにプッシュされ、両方のモニタとextraformを占めます。私は、可能な場合は、これを防ぐためにしたいと思います。どのように私はそうすることができますか?それは、またはそれら(画面1、画面2の左に20ピクセル、すなわち)。
私はこれを行うことができますどのように?
解決
あなたは、あなたのウィンドウがデスクトップからの相対ここで動作するようにScreenクラスを使用することができます。あなたは(でフォームのバウンドプロパティを渡すことによって)にフォームを配置しなければならないスクリーンどの把握することができますので、Screenクラスは、FromRectangleの方法があります。
各画面のオブジェクトは、バウンドプロパティ、あなたのウィンドウの位置とサイズを比較するために使用し、それに応じて調整することができています。
他のヒント
それはあなたが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!");
}
}
コードの形式であることを前提としています。このコードのみフォームが完全に画面上に含まれている場合、画面にフォームが含まれていることを印刷することに留意されたいです。しかし、これはあなたのニーズに応じて、修正するのではなく、簡単なはずです。
おそらく、あなたのフォームでDesktopLocationプロパティを使用すると、
彼らと何が起こっているのかと何が起こっているのかについての手掛かりを与えることができます