私はC#でWPFアプリケーションを作成しています。このウィンドウには「ログイン」というボタンがあるメインウィンドウがあります。これをクリックすると、ログインフォームを含む2番目のウィンドウが表示されます。ログインウィンドウで[キャンセル]ボタンをクリックすると、ログインウィンドウを閉じてメインウィンドウに戻りたいと思います。最初のウィンドウのコードで生成された2番目のウィンドウを閉じる
これは私が思いついた解決策です。しかし、ログインウィンドウのインスタンスはメインウィンドウのメソッドButtonLogin_Click()内に作成され、ログインウィンドウのメソッドButtonCancel_Click()はthis.Close()だけになりますので、メインウィンドウのボタンをもう一度押しますか?ログインウィンドウの既存のインスタンスが再度表示されるか、ボタンをクリックするたびに新しいインスタンスが作成されますか(これは、明らかに必要なものではありません。ログインボタンを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で、シングルトンはうまく動作しません。ユースケース:ログインをクリック - キャンセルをクリック - 再度ログインをクリックそれぞれのログインをクリックする度に2回ウィンドウを作成するようになります – ASh