2016-05-25 318 views
2

在我的WPF应用程序中,我想在光标未移动数秒时隐藏光标。 如果它被移动,我想再次显示它。 任何想法?空闲时隐藏光标

回答

2

你可以使用MouseMove事件是这样的:

测试代码:

myTimer = new Timer(3000); 
myTimer.AutoReset = false; 
myTimer.Elapsed += delegate { MouseExt.SafeOverrideCursor(Cursors.None); }; //Hide cursor 

private void MyView_MouseMove(object sender, MouseEventArgs e) 
{ 
    myTimer.Stop(); 
    Mouse.OverrideCursor = null; //Show cursor 
    myTimer.Start(); 
} 

这是调度正确调用覆盖光标一个帮手:

public static class MouseExt 
{ 
    public static void SafeOverrideCursor(Cursor cursor) 
    { 
     Application.Current.Dispatcher.Invoke(new Action(() => 
     { 
      Mouse.OverrideCursor = cursor; 
     })); 
    } 
} 

当计时器过去后,光标被隐藏。当它移动它重新出现,定时器重置。

+0

不起作用。什么都没有发生。在阅读代码时,这会隐藏鼠标3秒钟,然后再次显示。 – Annish

+0

@nnnish,告诉你它是未经测试...我忘了开始计时器:D也我没有正确处理OverrideCursor。它现在有效。 – Natxo

+0

我不认为OverrideCursor适合当我通过其他方式激活软件时它不会显示光标。 – lindexi