2

ウィンドウがユーザーに表示されていないかどうかを検出し、ユーザーが好みに合わせてサイズを変更できるように、ウィンドウを表示可能な位置に移動するにはどうすればよいですか。

問題:-フォームの位置とサイズを保存するプログラムがあります。これは完全に機能します。残念ながら、多くのユーザーは現在、複製と拡張を切り替えることができる複数の画面のグラフィックカードを持っています。

したがって、ユーザーがフォームを閉じ(プログラムは元の場所に保存されます)、ユーザーがシステムを切り替えて重複から拡張されたと言うと、プログラムが開きます。現在の画面システムの制限を超えたため、プログラムフォームは表示されなくなりました:(ユーザーはタスクバーで実行されていることを確認できます。ただし、アイコンをクリックすると、プログラムを最小化または最大化して右クリックするだけの短いフラッシュが表示されます。閉じるオプションのみがあります。

ユーザーに表示されないようにトラップしてから、アクティブなウィンドウに自動サイズ変更する必要があります。その後、ユーザーは適切と思われるサイズ変更/移動を行うことができます。

私はどんなアイデア/ポインターも歓迎します

4

2 に答える 2

5

この回答は、MSDNフォーラムの同じ質問に対して提供されました。基本的には、画面の境界をすばやくチェックし、プログラムがそれらの境界内にあるかどうかを確認します。そうでない場合は、次の場所に移動し0, 0ます。

using System.Windows.Forms; 

class Form1 : Form {
    protected void EnsureVisible() {
        foreach (Screen scrn in Screen.AllScreens) {
        // You may prefer Intersects(), rather than Contains()
            if (scrn.Bounds.Contains(this.Bounds)) {
              return;
            }
        }
        this.Location = new Point( 0, 0 );
    }
} 
于 2012-12-11T15:33:00.200 に答える
0

AllScreensプロパティを使用して、コンピューターに接続されているすべての画面のリストを取得できます。これを使用して、各画面の境界ボックスをチェックし、ウィンドウがすべての画面の外側にあるかどうかをテストできます。その場合は、位置をリセットします。

そして、私がこれをタイプしている間、JaredHarleyは私をそれに打ち負かしました。

于 2012-12-11T15:33:56.523 に答える