我正在尝试开发一个应用程序,在运行时,即使我的应用程序不在前台,也会在5秒不活动后将鼠标光标隐藏在屏幕上的任何位置。然后,一旦鼠标再次移动,鼠标应立即重新出现。
我一直在阅读很多关于低级别鼠标钩子的内容,但似乎无法绕过代表和回调,对我而言,使代码更难以阅读。
以下是我在解决方案方面一直在寻找的一些事项:
Hide mouse cursor after an idle time
http://blogs.msdn.com/b/toub/archive/2006/05/03/589468.aspx http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C
我的问题似乎是,如果我在我的主窗体上设置一个计时器5秒钟,那么如果它不活动,鼠标会在5秒后消失,但是鼠标重新出现也需要5秒钟!解决方案只是有两个独立的计时器和单独的事件吗?
非常感谢你的帮助!
答案 0 :(得分:4)
在表单上为MouseMove
事件添加处理程序,然后在Cursor.Show()
处理程序中调用MouseMove
。
答案 1 :(得分:1)
您不必创建2个不同的计时器。我会使用相同的计时器,但有一个私有成员变量,可以跟踪光标是否被隐藏。隐藏它后,您可以将计时器重置为更短(例如500毫秒)并继续跟踪它以将其重新打开。
你可以试试这个:
private Timer t;
void OnLoad(object sender, EventArgs e)
{
t = new Timer();
t.Interval = 5000;
t.Tick += new EventHandler(t_Tick);
}
private bool _hidden = false;
void t_Tick(object sender, EventArgs e)
{
if(!_hidden)
{
Cursor.Hide();
t.Interval = 500;
}
else
{
if(--some parameter---)
Cursor.Show();
}
}