C#是一种非常流行的编程语言,常被用于开发Windows上的桌面应用程序。在Windows窗体应用程序中,我们会经常使用到FormClosing和FormClosed事件来监测窗体关闭的状态。但是,许多人对这两个事件的具体区别并不是很清楚。在本文中,我们将详细讲解这两个事件的区别及其使用示例。
FormClosing事件
当Windows窗体应用程序正在关闭并且在关闭过程中时,FormClosing事件将被激活。这个事件允许我们在窗体关闭之前执行某些操作。例如,我们可以向用户询问是否真的要关闭应用程序,或者保存一些数据等操作。如果FormClosing事件的Handler函数中Cancel事件被设置为True,那么窗体将不会关闭。
以下是一个简单的FormClosing事件的代码示例:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr;
dr = MessageBox.Show("你确定要关闭应用程序吗?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dr == DialogResult.No)
{
e.Cancel = true;
}
}
在这个示例中,我们向用户询问是否真的要关闭应用程序,如果用户点击“否”,则窗体将不会关闭。
FormClosed事件
当Windows窗体应用程序已经关闭时,FormClosed事件将被激活。在这个事件的处理函数中,我们可以释放资源和进行垃圾回收等操作。因为在这个时候我们无法取消关闭操作,所以我们不能在这个事件中进行任何需要取消的操作。
以下是一个简单的FormClosed事件的代码示例:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//进行资源释放和垃圾回收等操作
}
在这个示例中,我们只是简单地释放资源和进行垃圾回收等操作。
总结:
FormClosing事件和FormClosed事件都是用于监测Windows窗体应用程序关闭的状态。区别在于,FormClosing事件在窗体关闭之前激活,FormClosed事件在窗体关闭之后激活。我们可以利用FormClosing事件来进行一些需要取消关闭操作的操作,或者向用户确认关闭操作。FormClosed事件可以用于释放资源和进行垃圾回收等操作。
示例:
让我们来看一个完整的示例。假设我们需要保存用户输入的文本内容。我们可以在FormClosing事件中向用户问询是否保存,并且在FormClosed事件中进行保存操作。
public partial class Form1 : Form
{
bool isTextChanged = false;
string filePath = "";
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
isTextChanged = true;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (isTextChanged == true)
{
DialogResult dr = MessageBox.Show("是否要保存文本内容?", "保存文件", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
if (filePath == "")
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文本文件|*.txt";
if (sfd.ShowDialog() == DialogResult.OK)
{
filePath = sfd.FileName;
}
}
if (filePath != "")
{
File.WriteAllText(filePath, textBox1.Text);
}
else
{
e.Cancel = true;
}
}
else if (dr == DialogResult.Cancel)
{
e.Cancel = true;
}
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//进行资源释放和垃圾回收等操作
}
}
在这个示例中,我们先定义了一个bool变量isTextChanged来检测文本框内容是否被改变过,以及一个string变量filePath来存储文件路径。在textBox1_TextChanged事件中,我们将isTextChanged设置为true,表明文本框内容已经被修改。在FormClosing事件中,我们向用户询问是否保存文件,如果是,则用SaveFileDialog保存文件并将isTextChanged置为false。如果没有选择文件路径,则设置e.Cancel为true,这样窗体就不会关闭。在FormClosed事件中,我们可以进行资源释放和垃圾回收等操作。
这就是FormClosing与FormClosed的区别详细解析以及示例的完整攻略,希望能帮助到大家。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中FormClosing与FormClosed的区别详细解析 - Python技术站