0

実装するのに最適で最も簡単なソリューションを見つけたいと思っている問題があります。

デスクトップでドラッグできる WPF アプリケーションを作成しましたが、通常は画面の右上隅に配置します。

私の問題は、解像度が常に低い別の場所からリモートでダイヤルインすると、アプリケーションが画面外になり、プロセスを強制終了して再起動しない限り、元に戻す方法がないことです。

常に見えるようにするために、いくつかのアイデアを考えました。

1] 実行中はいつでも、ループで可視解像度をチェックする子スレッドを生成します。検出された境界の外にある場合、その位置が更新されます。

2] ある種のメッセージングシステムを使用して、リモートインしたときにメッセージを送信します。これにより、それ自体が再調整されます。

誰にも何か提案はありますか??

4

1 に答える 1

2

ウィンドウが表示されている画面の 1 つにあることを確認するために、定期的に (数秒ごとに) 起動する DispatcherTimer を設定できます。そうでない場合は、そのように再配置されます。

WPF を使用している場合でも、System.Windows.Forms.Screen クラスを使用して、ユーザーのデスクトップと画面の設定に関する情報にアクセスできます。

何かのようなもの:

bool isWithin = false;
foreach (Screen screen in Screen.AllScreens)
{
    if (screen.Bounds.Contains(windowLocation))
        isWithin = true;
}

// if !isWithin, move to 0,0
于 2009-09-08T13:04:21.967 に答える