0

ボタンを押したときに、すでに開いているWPFウィンドウを開くのを防ぐにはどうすればよいですか(ユーザーコントロールを使用せず、ウィンドウフォームに追加しません)。

次のコードがありますが、ボタンを押すたびに、ボタンを押した量に応じて WPF ウィンドウが開きます。

そのエラーを防ぐ方法を知っている人に投与してください ありがとう、

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        win2 v2 = new win2();
        v2.Show();

    }

ここで、上記のボタンをクリックするたびにウィンドウが開きますが、すでに開いている場合は; 同じボタンをクリックすると、既に開いているウィンドウにフォーカスするのではなく、別のウィンドウが開きます。

どうすればそれを防ぐことができますか? (私はC#を使用しています)

4

3 に答える 3

1

を使用Application.Current.Windowsして、アプリケーションで開いているすべてのウィンドウを見つけることができます。

あなたのWindowタイプが含まれている場合Activateは、それをフォーカスに合わせます。コレクションに含まれていない場合はWindow、新しいものを作成します

private void button1_Click(object sender, RoutedEventArgs e)
{
    if (Application.Current.Windows.OfType<win2>().Any())
    {
        Application.Current.Windows.OfType<win2>().First().Activate();
    }
    else
    {
        new win2().Show();      
    }
}
于 2013-03-03T23:52:28.143 に答える
1
win2 v2 = null;

private void button1_Click(object sender, RoutedEventArgs e)
{

   if (v2 == null)
    {
       v2 = new win2();
       v2.Show();
    }
    else
       v2.Activate();

}
于 2013-03-03T23:50:03.563 に答える
1
 private void button1_Click(object sender, RoutedEventArgs e)
    {
        if(!Application.Current.Windows.OfType<win2>().Any())
        {
            win2 v2 = new win2();
            v2.Show();
        }   
    }

Application.Current.Windows は、プログラムが所有する現在開いているすべてのウィンドウを一覧表示します。タイプがすでに開いているかどうかを確認し、開いていwin2ない場合は新しいものを作成します。

于 2013-03-03T23:50:43.543 に答える