我如何决定是否创建一个新的窗口,当我点击一个按钮

本文关键字:一个 窗口 按钮 创建 是否 何决定 决定 | 更新日期: 2023-09-27 18:03:53

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

然而,主窗口包含一个按钮,当点击时,再次打开winReset。当你点击完成在winReset这一次,我不想要一个新的主窗口的实例,不像第一次。我只是想关闭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();
          }
}

我要做的是创建一个新的主窗口,只有当一个不存在。如果有,那么只需关闭当前的winReset。我不知道为什么我在这个问题上挣扎,但我似乎不能弄清楚。任何帮助吗?

我如何决定是否创建一个新的窗口,当我点击一个按钮

你可以像这样检查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();
}

您可以将main创建为本地对象,然后检查它是否为空。

Private MainWindow _main = null;

然后在处理程序——

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

当你想要遵循你的方法时,这应该对你有用:

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();
}