我有一个简单的 winForm,想要使用关闭事件并将用户重定向到注销过程。注销过程由按钮单击事件处理。当用户按下注销按钮并选择“否”时,它将保留在页面上,用户可以继续使用该应用程序。在关闭事件中,我调用了注销按钮事件方法,但是当用户选择“否”时,窗口关闭并且程序仍在运行。我想知道发送到方法的事件是否不同,或者基本上是为什么会发生?

    private void btnLogout_Click(object sender, EventArgs e) {
    DialogResult result = MessageBox.Show("Do you want to logout?", "Logout",  MessageBoxButtons.YesNo);
    if (result == DialogResult.Yes) {
        this.Visible = false;
        frmMain f = new frmMain();
        f.Show();
    else {
        return;
} // end logout
private void Form2_FormClosing(object sender, FormClosingEventArgs e) {
    btnLogout_Click(sender, e);

Note:此问题总结整理于: Handling Closing event in winForm by calling a button click event results in two different behaviour

首先,FormClosing 事件在窗体关闭时发生。关闭表单时,将释放该表单,释放与表单关联的所有资源。 因此,在 FormClosing 事件中,调用注销按钮事件方法,即使用户选择“否”,窗口也会关闭,程序仍在运行。 您可以将 FormClosingEventArgs 的 Cancel 属性设置为 true,以取消窗体的闭合。

private void Form2_FormClosing(object sender, FormClosingEventArgs e)  
    button1_Click( sender, e);  
    e.Cancel = true;     

这是您可以参考的有用文档

如果回复有帮助,请点击“接受答案”并点赞。

注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。