我玩一些非常簡單的窗體形式。我對那個詢問是否要保存他們所鍵入的內容的用戶的形式組織接近事件的事件處理程序:爲什麼我的windows窗體關閉?
private void closeNpForm(object sender, FormClosingEventArgs e)
{
if (!saveFlag)
{
if (MessageBox.Show("Do you want to save the text entered?", "Save Changes?", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
e.Cancel = true;
saveFlag = true;
writeToFile(this.allText.Text);
}
}
}
如果用戶點擊是(表示他們不希望保存自己的文字)我叫將writeToFile方法,並且還設置一個標誌,以免讓他們再次保存:
private void writeToFile(string text)
{
writer = new StreamWriter("inputdata.txt");
writer.Write(text);
writer.Close();
this.Close();
}
據我所看到的,將writeToFile方法應該在其完成關閉窗體。但是這並沒有發生,當我運行writeToFile方法時,表單只是保持打開狀態。任何人都可以告訴我我做錯了什麼?
據我所知,調用this.Close()
應觸發表單關閉事件,調用我的事件處理程序,由於國旗現在爲真,表單應該關閉沒有問題。
請注意,我的父類擴展了Form類,所以我只是使用this
來引用我的表單實例。
因此調用this.Close()難道不引發新的形式關閉事件? – richzilla 2011-04-20 21:06:19
@richzilla我不確定它是哪一個:-)這將很容易調試,以找出究竟發生了什麼。在關閉事件的頂部檢查「取消」的值(例如警告消息框或調試器斷點和監視)。這將說明發生了什麼。 – 2011-04-20 21:08:36