完全なフォームが画面に表示されているかどうかを調べようとしています。これを明確にするには:フォームが部分的にまたは完全に別のフォームに隠れているかどうかは気にしません。フォームが完全に画面上にあるかどうかを知りたいだけです。フォームがすべての画面の境界内にあるかどうか確認してください。
Windowsでは、フォームが半分隠れるようにフォームを移動することができます。これは、モニターの実際の範囲を超えて移動できるためです。 (さらに左、右、または下に)それが簡単なケースであるかどうかどうすれば確認できますか?
フォームがSystemInformation.VirtualScreen
の境界にあるかどうかを確認することができました。ここで問題となるのは、仮想スクリーンのすべてのピクセルが実際に見えるわけではないということです。もちろんこれはうまくいくでしょうSystemInformation.MonitorCount = 1
まだ私はこれに本当に満足していません。
さて、ここではあいまいな例を構築するだけです。 3つのモニターがお互いに並んでいて、それぞれが800ピクセル幅であるとします。モニター1とモニター3は600px、モニター2(中央のモニター)は400pxです。仮想スクリーンの不動産は、1800px * 600pxになります。モニタ2が他のモニタの上に整列されると、仮想スクリーンの不動産の底には200pxが表示され、それは見えません。今私はモニター1からモニター3までのウィンドウにまたがることができ、全体のフォームは表示されませんでしたが、モニター2で下部が見落とされることがありました。 –
そうしたケースを処理するためにはもっと多くのコードを書く必要があります。それと幸運。 –
私は知っている、それはちょうど非常に構築された例だった。私はそれが決してそれに来ないことを願っています。 –