如何在 C# 中单击我的窗体关闭事件中的链接标签
本文关键字:事件 标签 链接 我的 单击 窗体 | 更新日期: 2023-09-27 18:33:41
我在主表单上有一个注销按钮作为链接标签,所以如果用户点击这个 注销链接标签 是的,他已成功注销。
但问题是他直接关闭主表单而不点击注销
链接标签。所以当用户在我的注销时就没有办法写了 日志文件,因为他没有单击注销链接标签。
所以我想在我的form_Closing事件中识别我的注销链接标签?
我该怎么做?
编辑:
在我的注销链接标签下:
stopWatch = ApplicationState.CurrentTime.StopWatch;
stopWatch.Stop();
var timeSpent = stopWatch.Elapsed.ToString();
Application.Exit();
谢谢。
您可以通过两种方式处理这种情况:
-
删除表单的边框,以便用户无法直接关闭它(但在此中,您必须编写一些额外的代码以允许用户移动表单)。
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
-
在
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();
}
}