vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls   |   VB-Versionen: VB2005, VB200803.12.09
Dauer-Aktion während Button-Click ausführen

Dieser Tipp stellt zwei Varianten vor, wie man eine Dauer-Aktion ausführen kann, solange ein Button gedrückt wird.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  13.132 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Kürzlich wurde im Forum gefragt, wie man eine bestimmte Aktion ausführen, wenn man auf einen Button klickt. Das besondere daran: die Aktion so so lange ausgeführt werden, wie der Button gedrückt gehalten wird.

Variante 1:
Beim Klick auf den Button starten wir einen Timer, so dass die Aktion in einem fest vorgegebenen Intervall ausgeführt wird. Wird die Maustaste losgelassen, stoppen wir den Timer, so dass die Aktion autom. beendet wird.

Public Class Form1
  Private WithEvents oTimer As Timer
  Private Counter As Long
 
  Private Sub Button1_MouseDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
 
    ' Timer starten
    If IsNothing(oTimer) Then oTimer = New Timer
    oTimer.Interval = 100
    oTimer.Start()
  End Sub
 
  Private Sub Button1_MouseUp(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
 
    ' Timer stoppen
    oTimer.Stop()
  End Sub
 
  Private Sub oTimer_Tick(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles oTimer.Tick
 
    ' Aktion ausführen
    ' hier Vartiable hochzählen
    Counter += 1
 
    ' zum Test: Anzeige in der Titelzeile
    Me.Text = Counter
  End Sub
End Class

Variante 2:
Hier wird die Aktion nicht über ein Timer ausgeführt, sondern innerhalb einer Endlosschleife:

Public Class Form1
  Private bMouseDown As Boolean
  Private Counter As Long
 
  Private Sub Button1_MouseDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
 
    ' Aktion starten
    If Not bMouseDown Then
      bMouseDown = True
      Do While bMouseDown
        ' Aktion ausführen
        ' hier: Counter erhöhen
        Counter += 1
 
        ' zum Test: Anzeige in der Titelzeile
        Me.Text = Counter
 
        ' ggf. kurz warten
        System.Threading.Thread.Sleep(100)
 
 
        ' Wichtig: damit man auf das MouseUp-Event reagieren kann
        Application.DoEvents()
      Loop
    End If
  End Sub
 
  Private Sub Button1_MouseUp(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
 
    ' Aktion beenden
    bMouseDown = False
  End Sub
End Class

Dieser Tipp wurde bereits 13.132 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel