私には2つのフォームがあり、フォーム2はフォーム1から継承しています。
フォーム1とフォーム2の両方を閉じると、ユーザーが必ず終了するかどうかを尋ねる別のフォームが表示されます。次に、ユーザーが[はい]をクリックすると、ユーザーがゲームを保存するかどうかを尋ねる別のフォームが表示されます。これは、ユーザーが閉じるフォームがフォーム1ではなくフォーム2である場合に限ります。これは、フォーム1では保存が必要ないためです。
これは私が何とかしたことです:
//これらはForm1の終了および終了イベントハンドラーです。
private void GameForm_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
SureClose sc = new SureClose();
sc.StartPosition = FormStartPosition.CenterScreen;
sc.Show();
}
private void GameForm_FormClosed(object sender, FormClosedEventArgs e)
{
MainMenu menu = new MainMenu();
menu.Show();
}
次に、Sure Closeで://トーナメントはGameForm(フォーム1)から継承したフォーム2であることに注意してください
private void yesButton_Click(object sender, EventArgs e)
{
this.Hide();
if (GameForm.ActiveForm is Tournament)
{
SaveGame sg = new SaveGame();
sg.StartPosition = FormStartPosition.CenterScreen;
sg.Show();
}
else
{
GameForm.ActiveForm.Close();
}
}
private void noButton_Click(object sender, EventArgs e)
{
this.Hide();
}
//これはSaveGameフォームです:
private void saveButton_Click(object sender, EventArgs e)
{
// Still to do saving!
}
private void dontSaveButton_Click(object sender, EventArgs e)
{
this.Hide();
GameForm.ActiveForm.Close();
}
問題は、SureCloseフォームのyesButtonイベントハンドラーにGameForm.ActiveForm.Close()がある場合、これがGameForm Closingイベントハンドラーに戻るため、SureCloseダイアログが再び表示されることです。
私はやってみました:if(e.CloseReason()== CloseReason.UserClosing)ですが、閉じる理由は常にユーザーであるため、明らかに機能しません:/
どうすればこれを解決できますか?助けてくれてありがとう!