我有一个表单,如果没有完成鼠标交互,我想在 5 秒后关闭,但如果完成了任何鼠标交互,我希望它关闭countdown + 5 seconds
并且每次交互都会增加 5 秒。
到目前为止,这是我想出的:
int countdown = 5;
System.Timers.Timer timer;
启动计时器
timer = new System.Timers.Timer(1000);
timer.AutoReset = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(ProcessTimerEvent);
timer.Start();
事件
private void ProcessTimerEvent(Object obj, System.Timers.ElapsedEventArgs e)
{
--countdown;
if (countdown == 0)
{
timer.Close();
this.Invoke(new Action(() => { this.Close(); }));
}
}
只是为了测试,我使用表单 mouseclick 事件将倒计时增加 5,但必须将其更改为不同的事件,因为如果您单击表单上的标签或任何其他控件,它不会增加计时器。
private void NotifierTest_MouseClick(object sender, MouseEventArgs e)
{
countdown += 5;
}
问题
我是否正在实施倒计时,计数器可以以正确的方式增加?
我应该改变什么吗?
如果与我所做的有任何不同,您将如何做到这一点?
我应该如何处理鼠标点击捕获?
使用低级挂钩?
使用鼠标单击位置并验证它是否在我的 winform 上?
其他选项
我目前正在考虑的另一个选项是捕获鼠标是否在表单区域内,如果鼠标不在该区域内,则启用/禁用关闭倒计时,但我不确定如何与鼠标进行交互,因此以上关于我将如何与鼠标交互的问题。