フォーム位置の調整 : RSSリーダを.NET Framework 2.0で作る (第12回)
画面外に出てしまった場合の自動復元機能をフォームに追加します。
今回のテクニカル トピック
- 画面設定の変更の検出
- 画面外に出ていないか判定
- 画面内に入れる
画面外にでる?
通常の操作ではウィンドウが完全に画面外に出ることは無いですが、画面外に出てしまう操作もあります。
例えば最近増えてきたデュアル ディスプレイ環境にリモート デスクトップでログオンするとスクリーン数が減るためセカンダリスクリーンにあったウィンドウが画面外に出ます。
しかし、Microsoft Office 2003(WordやExcel)などは自動的に画面内に復帰してきます。
また、前回起動時のフォームの位置で表示するような気の効いたアプリケーションの場合、スクリーン外に表示してしまわないようにこの処理が必要になります。
このような動作をフォームに組み込みます。
最適なディスプレイに引き込もうとすると幾何計算を必要とするため、ここでは単純な処理を選択しています。
画面外に出ないようにする
この復帰処理は複数のフォームクラスから再利用します。
新規にFormBoundsControllerクラスを作成して「画面設定の検出」「画面外の出ていないかの判定」「画面内に入れる」処理を担当させます。
各フォームクラスはFormBoundsControllerのインスタンスを生成して、画面設定の変更時の動作を任せます。