我玩一些非常简单的窗体形式。我对那个询问是否要保存他们所键入的内容的用户的形式组织接近事件的事件处理程序:为什么我的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