TabControl mit Prüffunktion

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    TabControl mit Prüffunktion

    Hallo liebe Menschen,

    Ich habe mir eine Sub gebaut, die ablaufen soll, wenn ein Tab gewechselt wird. Für manche Tabs soll dann zusätzlich eine Prüfung ablaufen, die zurück gibt ob die Eingaben alle kompatibel sind. Ist dies nicht erfüllt soll er einfach die Tabpage beibehalten.
    Leider macht er das nur halb.

    Er springt ins nächste Tab, stellt den Fehler fest und springt dann wieder zurück, zeigt dann allerdings als Inhalt der Tabpage den Inhalt der nächsten Tabpage an.
    Vielleicht ein bissen kompliziert erklärt. Also nochmal mit Beispiel. Er will von tab3 zu tab4 springen, er prüft, findet einen Fehler bei den Eingaben in Tab3, springt dann wieder von Tab4 in Tab3, stellt in Tab3 jetzt aber den Inhalt von Tab4 dar.

    So also hier noch der entsprechende Teil meines Programms.

    Quellcode

    1. ​Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
    2. Select Case TabControl1.SelectedIndex
    3. Case 0
    4. Me.TabControl1.Size = New Size(649, 2520)
    5. Case 1
    6. Eingabewerte_Prüfen_Tabpage1()
    7. speichern_Eingabewerte_Tabpage1()
    8. Me.TabControl1.Size = New Size(649, 820)
    9. Case 2
    10. Eingabewerte_prüfen_Tabpage2()
    11. Eingabewerte_speichern_Tabpage2()
    12. Me.TabControl1.Size = New Size(649, 580)
    13. Case 3
    14. Prüfen_Feldlänge()
    15. If testl = False Then
    16. Me.TabControl1.SelectTab(2)
    17. Exit Select
    18. End If
    19. Me.TabControl1.Size = New Size(649, 580)
    20. Case 4
    21. Eingabewerte_prüfen_Tabpage4()
    22. Eingabewerte_speichern_Tabpage4()
    23. Prüfen_spannglieder()
    24. If testa = False OrElse testn = False Then
    25. Me.TabControl1.SelectTab(3)
    26. Exit Select
    27. End If
    28. Me.TabControl1.Size = New Size(649, 580)
    29. Case 5
    30. Me.TabControl1.Size = New Size(649, 580)
    31. Case 6
    32. Eingabewerte_prüfen_Tabpage6()
    33. Eingabewerte_speichern_Tabpage6()
    34. Me.TabControl1.Size = New Size(649, 580)
    35. End Select
    36. End Sub


    Ich hoffe das mit dem Code hat geklappt... ?(
    Willkommen im Forum. :thumbup:

    Beton-Katrin schrieb:

    findet einen Fehler bei den Eingaben in Tab3, springt dann wieder von Tab4 in Tab3
    Klar, dass er hin- und her hüpft.
    1. weißt Du nicht, wo Du herkommst,
    2. ist bei Tab 4 auch ein Test, der zurück auf 3 setzt.
    Wenn Du weißt, woher Du kommst, dann kannst Du zurück zu diesem Tab wechseln:

    VB.NET-Quellcode

    1. Private LastTab As Integer = 0
    2. Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
    3. ' ...
    4. Case 3
    5. Prüfen_Feldlänge()
    6. If testl = False Then
    7. Me.TabControl1.SelectTab(LastTab) ' dies hier
    8. Return ' und dies hier
    9. End If
    10. ' ...
    11. End Select
    12. LastTab = TabControl1.SelectedIndex
    13. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Rod,

    danke schön, ist tatsächlich das erste Mal, dass Google alleine nicht gereicht hat, bin sonst oft mit den Beiträgen anderer User weitergekommen. :)

    So wieder zu Thema, das führt mich leider nur zum selben Ergebnis. Er wählt den richtigen Tab an, stellt aber den Inhalt von einem anderen da. Mir kommt das eher wie ein Lade-Problem vor. Hier mal Bilder...

    Achso kurz zum Ablauf:
    Bild 2 ist die Ausgangssituation, der User klickt jetzt auf weiter oder auf den nächsten Tab, dann kommt die Fehlermeldung "bla bla - geht nicht", daraufhin soll er wieder das Selbe anzeigen wie in Bild 2 zeigt aber das an, was in 4 dargestellt ist
    Bilder
    • 2.PNG

      20,3 kB, 704×638, 88 mal angesehen
    • 3.PNG

      28,35 kB, 762×656, 81 mal angesehen
    • 4.PNG

      21,75 kB, 718×652, 67 mal angesehen
    @Beton-Katrin Dann musst Du vor dem Klicken auf den "verbotenen" Tab in die Prozedur TabControl1_SelectedIndexChanged einen Haltepunkt setzen und diese zeilenweise durcharbeiten.
    Dies nennt sich Debuggen. Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo nochmal,

    also ich habe es jetzt gelöst. Es ist wirklich ein Darstellungsproblem, habe jetzt noch ein selectedtab.show hinzugefügt, dadurch läd er das Tab nochmal und stellt es richtig da.

    Vielen Dank für die Hilfe.

    Quellcode

    1. Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
    2. LastTab = TabControl1.SelectedIndex - 1
    3. Select Case TabControl1.SelectedIndex
    4. Case 0
    5. Me.TabControl1.Size = New Size(649, 2520)
    6. Case 1
    7. Eingabewerte_Prüfen_Tabpage1()
    8. speichern_Eingabewerte_Tabpage1()
    9. Me.TabControl1.Size = New Size(649, 820)
    10. Case 2
    11. Eingabewerte_prüfen_Tabpage2()
    12. Eingabewerte_speichern_Tabpage2()
    13. Me.TabControl1.Size = New Size(649, 580)
    14. Case 3
    15. Prüfen_Feldlänge()
    16. If testl = False Then
    17. Me.TabControl1.SelectTab(LastTab)
    18. Me.TabControl1.SelectedTab.Show()
    19. End If
    20. Return
    21. Me.TabControl1.Size = New Size(649, 580)
    22. Case 4
    23. Eingabewerte_prüfen_Tabpage4()
    24. Eingabewerte_speichern_Tabpage4()
    25. Prüfen_spannglieder()
    26. If testa = False OrElse testn = False Then
    27. Me.TabControl1.SelectTab(LastTab)
    28. Me.TabControl1.SelectedTab.Show()
    29. End If
    30. Return
    31. Me.TabControl1.Size = New Size(649, 580)
    32. Case 5
    33. Me.TabControl1.Size = New Size(649, 580)
    34. Case 6
    35. Eingabewerte_prüfen_Tabpage6()
    36. Eingabewerte_speichern_Tabpage6()
    37. Me.TabControl1.Size = New Size(649, 580)
    38. End Select
    39. LastTab = TabControl1.SelectedIndex
    40. End Sub

    Beton-Katrin schrieb:

    also ich habe es jetzt gelöst.
    Allerdings nicht mit diesem Code.
    Die beiden Zeilen Return sollten wohl in die If-Bedingung (ggf. in den Else-Zweig) gehören.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!