不活动x分钟后返回登录表单

本文关键字:登录 表单 返回 分钟 不活动 | 更新日期: 2023-09-27 18:09:48

我创建了一个WinForm应用程序。现在我想检测用户没有与该程序进行任何交互的时刻(例如,20分钟后)。在此事件之后,我想回到我的登录表单。如何,特别是在哪里,我可以做到这一点?我有很多不同的窗体和控件,不想修改太多。

谢谢。:)

不活动x分钟后返回登录表单

无需看到任何代码…

  1. 在你的命名空间下创建一个带有单一公共静态DateTime属性的类
  2. 处理窗体上的鼠标和键盘事件。
  3. 在事件处理程序中使用当前时间更新此属性。
  4. 添加计时器,每X次检查此属性。

另外:了解如何在表单级别处理键盘事件Windows窗体应用程序中的键盘输入

无需看到任何代码…

一个快速而肮脏的方法是实现Timer,每20分钟检查鼠标位置…如果用户仍然处于活动状态,他们不太可能不移动鼠标。(除非你的控件可以完全通过键盘控制)

我相信你可以通过:

查看鼠标位置

Cursor.Position.XCursor.Position.Y

在主表单上添加一个计时器

public static System.Timers.Timer g_timer = new System.Timers.Timer(20 * 1000 * 60);

现在在form1构造函数中添加一个事件:

public Form1()
{
    InitializeComponent();
    g_timer.Elapsed += new System.Timers.ElapsedEventHandler(g_timer_Elapsed);
    g_timer.Start();
}

和事件处理程序作为

private static void g_timer_Elapsed(object sender, EventArgs e)
{
    //Hide/ Close other forms and Show login form
}

现在写一个函数来重置主格式的定时器

public static void resettimer()
{
    g_timer.Stop();
    g_timer.Start();
}

现在您可以像这样在每个表单的KeyPress事件上调用form1.resettimer()函数。

private void Form2_KeyPress(object sender, KeyPressEventArgs e) 
{
    form1.resettimer(); 
}