2016-05-25 13 views
2

In meiner WPF-App möchte ich den Cursor ausblenden, wenn er sich einige Sekunden nicht bewegt hat. Wenn es bewegt wird, möchte ich es noch einmal zeigen. Irgendwelche Ideen?Ausblenden des Cursors im Leerlauf

Antwort

2

Sie könnten MouseMove Veranstaltung wie diese verwenden:

Getestet Code:

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

Dies ist ein Helfer richtig die Forderung nach Versendung der Cursor außer Kraft zu setzen:

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

Wenn Der Timer läuft ab, der Cursor ist ausgeblendet. Wenn es bewegt wird, erscheint es erneut und der Timer wird zurückgesetzt.

+0

Funktioniert nicht. Nichts passiert. Wenn ich den Code lese, wird die Maus 3 Sekunden lang ausgeblendet und dann erneut angezeigt. – Annish

+0

@Annish, sagte Ihnen, es wurde nicht getestet ... Ich habe vergessen, den Timer zu starten: D auch ich war nicht richtig behandelt OverrideCursor. Es funktioniert jetzt. – Natxo

+0

Ich denke nicht, OverrideCursor ist gut für, wenn ich die Software von anderen, dass es nie den Cursor anzeigen wird. – lindexi

Verwandte Themen