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-Key: 285794

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

Printed on: April 19, 2024 at 13:04 o'clock

Member: emeriks
emeriks Oct 16, 2015 at 16:28:13 (UTC)
Goto Top
Hi,
ja das geht.

E.
Member: emeriks
Solution emeriks Oct 16, 2015 updated at 18:10:57 (UTC)
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
Member: GERz0cKErZ
GERz0cKErZ Oct 16, 2015 at 17:43:28 (UTC)
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.
Member: emeriks
Solution emeriks Oct 16, 2015 updated at 18:10:56 (UTC)
Goto Top
Na dann nimm den Timer-Start (Zeile 6) in das MouseMove-Event --> zw. Zeile 20 & 21.
Member: GERz0cKErZ
GERz0cKErZ Oct 16, 2015 at 18:10:51 (UTC)
Goto Top
Vielen dank, funktioniert!