gerz0ckerz
Goto Top

Kann man in Visual Studio einen button sichtbar machen, wenn sich die Maus bewegt?

Hallo,


Ich möchte wie schon im Titel geschrieben einen Button sichtbar machen sobald sich die Maus irgendwo in der Form bewegt. Wenn sich die Maus 2 Sekunden lang nicht bewegt soll der Button wieder unsichtbar werden.
Geht das?

Content-ID: 285794

Url: https://administrator.de/contentid/285794

Ausgedruckt am: 26.11.2024 um 08:11 Uhr

emeriks
emeriks 16.10.2015 um 18:28:13 Uhr
Goto Top
Hi,
ja das geht.

E.
emeriks
Lösung emeriks 16.10.2015 aktualisiert um 20:10:57 Uhr
Goto Top
siehe Form_MouseMove Event
dazu einen Timer als Modulvariable

Public Class Form1
  Private WithEvents mTimer As New Timers.Timer(500)  '500 ms  
  Private mLastMouseMove As Date = Now.AddSeconds(-10)

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    mTimer.Start()  'Timer starten  
  End Sub

  Private Sub mTimer_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles mTimer.Elapsed
    If DateDiff(DateInterval.Second, mLastMouseMove, Now) >= 2 Then
      Me.SetVisibleState(Button1, False)  'Button verbergen  
    End If
  End Sub

  Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
    Static µLastLocation As New Point(0, 0)  'Speicher für die letzte bekannte Maus-Position  
    If e.Location <> µLastLocation Then
      µLastLocation = e.Location  'Maus-Position merken  
      mLastMouseMove = Now  'merken, wann die Maus zuletzt bewegt wurde  
      Me.SetVisibleState(Button1, True)  'Button sichtbar  
    End If
  End Sub

  Private Sub SetVisibleState(ByVal xControl As Control, ByVal NewState As Boolean)
    If Me.InvokeRequired Then
      Me.Invoke(New Action(Of Control, Boolean)(AddressOf Me.SetVisibleState), xControl, NewState)
    Else
      xControl.Visible = NewState
    End If
  End Sub
End Class
GERz0cKErZ
GERz0cKErZ 16.10.2015 um 19:43:28 Uhr
Goto Top
Wenn ich diesen Code ausführe, verschwindet der Button nach einer Sekunde ohne das ich die Maus bewege.
Aber der Button soll solange angezeigt werden bis sich die Maus 2 Sekunden lang nicht bewegt. Wenn sich die Maus später wieder bewegt soll der Button wieder angzeigt werden, so wie bei Youtube im Vollbildmodus.

Trotzdem danke, hat schonmal ein bisschen weiter gebracht.
emeriks
Lösung emeriks 16.10.2015 aktualisiert um 20:10:56 Uhr
Goto Top
Na dann nimm den Timer-Start (Zeile 6) in das MouseMove-Event --> zw. Zeile 20 & 21.
GERz0cKErZ
GERz0cKErZ 16.10.2015 um 20:10:51 Uhr
Goto Top
Vielen dank, funktioniert!