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.675 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. |
sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |