我正在用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