C# 单击按钮时,如何决定是否创建新窗口
我有一个启动应用程序时出现的小窗口(winReset)。按“完成”后,主窗口打开 但是,主窗口包含一个按钮,单击该按钮后,将再次打开winReset。当您这次单击winReset上的“完成”时,我不想要主窗口的新实例,这与第一次不同。我只想关闭winReset 我这里的代码有问题 以下是迄今为止我在winReset背后的代码,但它不起作用:C# 单击按钮时,如何决定是否创建新窗口,c#,wpf,C#,Wpf,我有一个启动应用程序时出现的小窗口(winReset)。按“完成”后,主窗口打开 但是,主窗口包含一个按钮,单击该按钮后,将再次打开winReset。当您这次单击winReset上的“完成”时,我不想要主窗口的新实例,这与第一次不同。我只想关闭winReset 我这里的代码有问题 以下是迄今为止我在winReset背后的代码,但它不起作用: private void btnClickDone(object sender, RoutedEventArgs e) { Win
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();
}
}
private void btnClickDone(对象发送方,路由目标)
{
Window win=App.Current.Windows.OfType().SingleOrDefault(w=>w.Name==“main”);
if(win.ShowDialog()==true)
{
这个。关闭();
}
其他的
{
MainWindow main=新的MainWindow();
App.Current.MainWindow=main;
这个。关闭();
main.Show();
}
}
我要做的是创建一个新的主窗口,如果它还不存在的话。如果有,则只需关闭当前winReset。我不确定我为什么要为此而挣扎,但我似乎无法理解这一点。有什么帮助吗?您可以将main创建为本地对象,然后检查其是否为null
Private MainWindow _main = null;
然后在handler中--
当您想要遵循您的方法时,这应该适用于您:
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();
}
windowwin=App.Current.Windows.OfType().SingleOrDefault(w=>w.DependencyObjectType.Name==“MainWindow”);
if(win!=null)
{
这个。关闭();
}
其他的
{
MainWindow main=新的MainWindow();
App.Current.MainWindow=main;
这个。关闭();
main.Show();
}
您可以像这样检查App.Current.main窗口:
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();
}
这很容易解决。重新创建
winReset
时,请将bool
变量如showMain
设置为false
。一旦此变量为false
,单击“完成”将关闭应用程序。如何从另一个窗口引用变量?如果在我的主窗口中创建_main,如何在我的winReset窗口中使用它?App Current main窗口将在实际需要时引用你的主窗口_main=App.Current.main窗口,这似乎不起作用。要创建第一个主窗口,它可以工作。但是,当我单击按钮并创建一个新的winReset时,单击“完成”后,会出现一个新的Main窗口。在打开弹出窗口之前,您需要设置\u Main窗口,并保留对它的引用。这样,每当您在if语句之外创建一个新的Main窗口实例时,我如何引用Main窗口?我无法执行main=App.Current.MainWindow()代码>必须强制转换其类型。您可以将var main=App.Current.MainWindow作为MainWindow执行
或var main=(MainWindow)App.Current.MainWindow
。。。不要将MainWindow
类与应用程序的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();
}