Folgendes Szenario: Beim Wechseln der Registerkarte wird hierzu das "Click"-Ereignis ausgelöst. Über den Parameter PreviousTab kann die vorige Registerkarte abgefragt werden: Private Sub SSTab1_Click(PreviousTab As Integer) If PreviousTab = 0 Then ' Prüfen, ob alle zwingenden Angaben der ' 1. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtName" ' nicht leer sein If Len(txtName.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 1. Registerkarte wieder aktivieren SSTab1.Tab = 0 MsgBox "Bitte geben Sie zunächst Ihren Namen ein!" End If ElseIf PreviousTab = 1 Then ' Prüfen, ob alle zwingenden Angaben der ' 2. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtEMail" ' nicht leer sein If Len(txtEMail.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 2. Registerkarte wieder aktivieren SSTab1.Tab = 1 MsgBox "Bitte EMail-Adresse eingeben!" End If End If End Sub Viele User würden obigen Code für "richtig" finden, staunen aber nicht schlecht, wenn Sie den Code ausführen. Durch die Anweisung SSTab.Tab = ... wird autom. wieder das Click-Ereignis ausgelöst, wobei der Parameter "PreviousTab" diesmal schon den Wert der neuen Registerkarte besitzt. Der Code im Click-Ereignis wird daher wieder ausgeführt, was zu einer Endlosschleife führt! Mit nachfolgender Änderung kann man die Endlosschleife unterbinden und den Wechsel der Registerkarte bei fehlenden Angaben korrekt unterbinden: Private Sub SSTab1_Click(PreviousTab As Integer) Static bWorking As Boolean If bWorking Then Exit Sub bWorking = True If PreviousTab = 0 Then ' Prüfen, ob alle zwingenden Angaben der ' 1. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtName" ' nicht leer sein If Len(txtName.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 1. Registerkarte wieder aktivieren SSTab1.Tab = 0 MsgBox "Bitte geben Sie zunächst Ihren Namen ein!" End If ElseIf PreviousTab = 1 Then ' Prüfen, ob alle zwingenden Angaben der ' 2. Registerkarte gemacht wurden ' ' In diesem Beispiel darf die TextBox "txtEMail" ' nicht leer sein If Len(txtEMail.Text) = 0 Then ' Falls nicht, Wechsel der Registerkare unterbinden ' und 2. Registerkarte wieder aktivieren SSTab1.Tab = 1 MsgBox "Bitte EMail-Adresse eingeben!" End If End If bWorking = False End Sub Dieser Tipp wurde bereits 9.514 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Tipp des Monats Juli 2024 Dieter Otter Beliebige Zeichen am Anfang und Ende eines Strings entfernen Mit der Trim-Funktion lassen sich nicht nur Leerzeichen, sondern bei Bedarf auch beliebige Zeichen entfernen. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |