如何在 C# 中单击我的窗体关闭事件中的链接标签

本文关键字:事件 标签 链接 我的 单击 窗体 | 更新日期: 2023-09-27 18:33:41

我在主表单上有一个注销按钮作为链接标签,所以如果用户点击这个 注销链接标签 是的,他已成功注销。

但问题是他直接关闭主表单而不点击注销
链接标签。所以当用户在我的注销时就没有办法写了 日志文件,因为他没有单击注销链接标签。

所以我想在我的form_Closing事件中识别我的注销链接标签?

我该怎么做?

编辑:

在我的注销链接标签下:

 stopWatch = ApplicationState.CurrentTime.StopWatch;
 stopWatch.Stop();
 var timeSpent = stopWatch.Elapsed.ToString();
 Application.Exit();

谢谢。

如何在 C# 中单击我的窗体关闭事件中的链接标签

您可以通过两种方式处理这种情况:

  1. 删除表单的边框,以便用户无法直接关闭它(但在此中,您必须编写一些额外的代码以允许用户移动表单)。

    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    
  2. form_Closing上调用注销方法或事件处理程序

但是,您应该有一个单独的方法来包含完整的Logout逻辑,而不是包含它的事件处理程序。

检查 LinkVisited 属性会有所帮助。如果它具有真值,则链接已被单击。

如果您有一个窗体,在用户只需单击"X"按钮并关闭它之前,应该执行某些操作,请考虑使用类似于以下内容的模式实现 FormClosing 事件处理程序:

private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
    {
        // We can ask the user if they want to log out,
        // and if not, we can cancel the closing of the form.
        e.Cancel = true;
    }
    else
    {
        // System is closing form, automatically log out
        // and allow the form to close.
    }
}

这简化了程序设计,因为现在从我们的链接标签中,我们可以在询问用户是否要注销后简单地尝试关闭表单:

private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    // Confirm with user if they want to log out:
    var result = MessageBox.Show(
        "Are you sure you want to log out?", "Confirm Log Out",
        MessageBoxButtons.YesNo);
    if (result == System.Windows.Forms.DialogResult.Yes)
    {
        // Closing the form executes log-out:
        this.Close();
    }
}