0

伙计们,当按钮按下事件时,如何防止打开已经打开的 WPF 窗口(不使用用户控件并且不添加到 Windows 窗体)?

我有以下代码,但每次按下按钮时,它都会根据按下按钮的数量打开 WPF 窗口。

任何人都知道如何防止该错误谢谢,

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

    }

在这里,当我每次点击上面的按钮时,它都会打开一个窗口,但是当它已经打开时;如果我单击同一个按钮,它将打开另一个窗口,而不是专注于已经打开的窗口。

我该如何防止呢?(我正在使用 C# )

4

3 回答 3

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 回答
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 回答