我有兩種形式,表2從表繼承1.關閉事件處理程序C#
我需要做的是,當我關閉這兩個表1和表2另一種形式詢問用戶是一定要退出出現。然後,如果用戶點擊是,則當且僅當用戶關閉的表格是表格2而非表格1時,纔會出現詢問用戶是否想要保存遊戲的另一表格,因爲表格1不需要保存。
這是我能夠做到的:
//這些都是表1封閉和封閉的事件處理程序:
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();
}
然後在肯定關閉://請注意,比賽是2型從GameForm繼承(表格1)
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對話框再次出現。
我試圖做:如果(e.CloseReason()== CloseReason.UserClosing) 但顯然它不工作,要麼是因爲關門的原因永遠是用戶:/
我怎樣才能解決這個? 非常感謝您的幫助!
。然後使用對話結果對結果使用不同的操作。有關示例,請參見[此鏈接](http://stackoverflow.com/questions/3036829/messagebox-with-yes-no-and-dialogresult)。 – AssaultingCuccos
以及爲什麼對話框會改變而不是另一種形式? – Bernice
看看德米特里的答案。它允許你停留在同一個方法中,而不必去另一個類並再次調用上一個方法(這是遞歸的課程),並且如在form1中的虛擬覆蓋所看到的,它不會做任何事情,而在form2中它會詢問保存遊戲。 – AssaultingCuccos