2016-05-25 6 views
2

私のWPFアプリケーションでは、カーソルが数秒間動かなかったときにカーソルを隠したいと思っています。 移動した場合は、再度表示します。 アイデアアイドル時にカーソルを隠す

答えて

2

あなたはこのようMouseMoveイベントを使用することができます。

テスト済みコード:

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

:これは、カーソルを無効にするために、適切に呼び出しをディスパッチするためのヘルパーは

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(); 
} 

ですタイマーが経過するとカーソルは非表示になります。移動したときに再び表示され、タイマーがリセットされます。

+0

動作しません。何も起こっていない。コードを読むと、マウスが3秒間隠れてしまい、再び表示されます。 – Annish

+0

@Annish、それはあなたがそれがテストされていないと言った...私は忘れてタイマーを開始:Dも私は適切にOverrideCursorを処理していませんでした。それは今働く。 – Natxo

+0

私はカーソルが表示されないように他の人がソフトウェアをアクティブにすると、OverrideCursorがうまくいるとは思わない。 – lindexi

関連する問題