我在启动应用程序时出现了一个小窗口(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。我不确定为什么我会挣扎于此,但我似乎无法解决这个问题。有什么帮助吗?
答案 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();
}