我正在用C#编写一个WPF应用程序,它有一个名为“Login”的按钮的主窗口。如果您点击它,将会出现一个带登录表单的第二个窗口。如果我点击登录窗口中的“取消”按钮,我想登录窗口关闭,我想返回到主窗口。关闭在第一个窗口的代码中生成的第二个窗口
这是我想出的解决方案。但是,由于Login窗口的实例是在主窗口的ButtonLogin_Click()方法内部创建的,并且由于登录窗口的ButtonCancel_Click()方法只有this.Close(),所以如果单击“Login”再次在主窗口中按钮?将登录窗口的现有实例再次显示,还是每次单击按钮时都会创建一个新实例(这不是我想要的,因为如果单击“登录”窗口后最终会有n个登录窗口实例登录按钮n次)?做这个的最好方式是什么?
MainWindow.xaml.cs:
namespace TestTwoWindows
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonLogin_Click(object sender, RoutedEventArgs e)
{
Login LoginWindow = new Login();
LoginWindow.Show();
}
}
}
Login.xaml.cs:
namespace TestTwoWindows
{
public partial class Login : Window
{
public Login()
{
InitializeComponent();
}
private void ButtonCancel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}
打开一个窗口为模态:'LoginWindow.Show();' - >'LoginWindow.ShowDialog();'。 MainWindow将无法访问,直到LoginWindow关闭 – ASh
[相关](https://stackoverflow.com/questions/6320393/how-to-create-a-class-which-can-only-have-a-single-instance-in -c-sharp) – user5226582
@ user5226582,singletone在这里效果不好。用例:单击登录 - 单击取消 - 再次单击登录。它使更多的意见,每次创建一个窗口两次登录点击 – ASh