按下按钮时防止多个打开的.XMAL窗口

时间:2013-03-03 23:45:43

标签: c# wpf expression-blend

伙伴们如何在按下按钮事件时阻止打开已经打开的WPF窗口(不使用用户控件而不是添加到窗体中)?

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

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

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

    }

这里,每当我点击上面的按钮时,它会打开一个窗口,但是当它已经打开时;如果我点击相同的按钮,它将打开另一个窗口而不是聚焦到已经打开的窗口。

我该如何预防呢? (我使用C#)

3 个答案:

答案 0 :(得分:1)

win2 v2 = null;

private void button1_Click(object sender, RoutedEventArgs e)
{

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

}

答案 1 :(得分: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();      
    }
}

答案 2 :(得分:0)

 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类型的任何一个,如果没有,那么我们创建一个新的。