如何保存数据时关闭事件发生在WinForms
本文关键字:事件 WinForms 何保存 保存 数据 | 更新日期: 2023-09-27 18:13:44
我想要一个消息框询问未保存的数据在窗体关闭事件。
如果用户选择是,则将数据保存在文本文件中并退出应用程序。
如果用户选择不保存不退出应用程序。
我试过下面的代码。但是它不关闭应用程序,并使消息框一次又一次地出现。
public void SaveMyFile()
{
//// Create a SaveFileDialog to request a path and file name to save to.
SaveFileDialog saveFile1 = new SaveFileDialog();
//// Initialize the SaveFileDialog to specify the RTF extension for the file.
saveFile1.DefaultExt = "*.txt";
saveFile1.Filter = "Info Changed Data (*.txt)|*.txt";
//// Determine if the user selected a file name from the saveFileDialog.
if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
saveFile1.FileName.Length > 0)
{
//// Save the contents of the RichTextBox into the file.
richTextBox1.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText);
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Do You Want To Save Your Data", "CodeJuggler", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
SaveMyFile();
this.Close();
}
else if (dialogResult == DialogResult.No)
{
this.Close();
}
}
删除行
this.Close();
这是不必要的。应该是这样的:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Do You Want To Save Your Data", "CodeJuggler", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
SaveMyFile();
}
}
或者像这样:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Do You Want To Save Your Data", "CodeJuggler", MessageBoxButtons.YesNoCancel);
if (dialogResult == DialogResult.Yes) SaveMyFile();
else if (dialogResult == DialogResult.Cancel) e.Cancel = true;
}
"…"没有循环的"一次又一次"通常暗示程序中有一些隐退。
在您的情况下,您在Closing
事件处理程序中调用Form.Close()
,然后引发Closing
事件,其中您调用Form.Close()
和…我想你明白了。
简单地删除对Close()
的调用,您不需要它们。如果Closing
被提升,那么您的表单将被关闭,除非您将FormClosingEventArgs
参数中的Cancel
属性设置为true
。