当我单击按钮时,如何决定是否创建新窗口

时间:2015-07-21 14:45:59

标签: c# wpf

我在启动应用程序时出现了一个小窗口(winReset)。按完成后,主窗口打开。

但是,主窗口包含一个按钮,单击该按钮会再次打开winReset。当你在winReset上单击Done时,我不想要一个新的主窗口实例,这与第一次不同。我只想关闭winReset。

我在这里遇到了代码问题。

这是我目前在winReset背后的代码中所拥有的内容,但它无效:

private void btnClickDone(object sender, RoutedEventArgs e)
    {

        Window win = App.Current.Windows.OfType<Window>().SingleOrDefault(w => w.Name == "main");

        if (win.ShowDialog() == true)
        {

            this.Close();
        }

        else
        {
            MainWindow main = new MainWindow();
            App.Current.MainWindow = main;
            this.Close();
            main.Show();
          }
}

我尝试做的只是在一个人不存在的情况下创建一个新的MainWindow。如果有,那么只需关闭当前的winReset。我不确定为什么我会挣扎于此,但我似乎无法解决这个问题。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

您可以创建main作为本地对象,然后检查它是否为null ..

Private MainWindow _main = null;

然后在处理程序 -

if(_main == null)
    _main = new MainWindow();

App.Current.MainWindow = _main;
this.Close();
_main.Show();

答案 1 :(得分:1)

您可以像这样检查App.Current.MainWindow:

if (App.Current.MainWindow != null && App.Current.MainWindow.GetType() == typeof(MainWindow))
{
    this.Close();
}
else
{
    MainWindow main = new MainWindow();
    App.Current.MainWindow = main;
    this.Close();
    main.Show();
}

答案 2 :(得分:0)

当您想要遵循您的方法时,这应该适合您:

Window win = App.Current.Windows.OfType<Window>().SingleOrDefault(w => w.DependencyObjectType.Name == "MainWindow");
if (win != null)
{
  this.Close();
}
else
{
  MainWindow main = new MainWindow();
  App.Current.MainWindow = main;
  this.Close();
  main.Show();
}