GroupBox-Sichtbarkeit in Abhängigkeit von TabControl

  • VB.NET

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

    GroupBox-Sichtbarkeit in Abhängigkeit von TabControl

    Liebes Froum,

    ich habe ein TabControl mit zwei Tags, einen Button "Einstellungen" sowie zwei GroupBoxen.
    Wenn der erste Tab "Timer" angeklickt ist und ich auf den Button klicke, soll die erste GroupBox sichtbar werden. Bei erneutem Klicken soll sie wieder verschwinden.
    Ist der zweite Tab "Uhrzeit" angeklickt, soll bei einem Klick auf den Button die zweite GroupBox sichtbar werden und beim zweiten Klick wieder verschwinden.

    Bis jetzt bekomme ich es nur hin, in den Code des Buttons direkt eine GroupBox einzubinden.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. If GroupBox1.Visible = False Then
    3. GroupBox1.Visible = True
    4. Else : GroupBox1.Visible = False
    5. End If
    6. End Sub


    Klappt zwar super, ist aber nicht mein gewünschtes Ergebnis.

    Ich habe bereits verschiede Befehle probiert, aber nichts klappt wirklich.
    Hier einmal mein "Standardcode", in dem ich bereits unzählige verschiedene If-Abfrage getestet habe.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. If TabControl1.SelectedTab Is Me.Timer Then
    3. If GroupBox1.Visible = False Then
    4. GroupBox1.Visible = True
    5. Else : GroupBox1.Visible = False
    6. End If
    7. ElseIf TabControl1.SelectedTab Is Me.Uhrzeit Then
    8. If GroupBox2.Visible = False Then
    9. GroupBox2.Visible = True
    10. Else : GroupBox2.Visible = False
    11. End If
    12. End If
    13. If GroupBox1.Visible = False Then
    14. GroupBox1.Visible = True
    15. Else : GroupBox1.Visible = False
    16. End If
    17. End Sub


    Wäre super wenn mit jemand helfen kann.

    VB.NET-Quellcode

    1. Private Sub DoIt()
    2. Dim D As TabPage = Tabcontrol1.SelectedTab
    3. Select Case True
    4. Case D.Equals(Timer)
    5. GroupBox1.Enabled = Not GroupBox1.Enabled
    6. Case D.Equals(Uhrzeit)
    7. GroupBox2.Enabled = Not GroupBox2.Enabled
    8. End Select
    9. End Sub


    Timer ist übrigens ein Bezeichner. Würde ich an deiner Stelle anders nennen.
    Das sieht mir fast nach CheckBox aus:

    VB.NET-Quellcode

    1. GroupBox1.Enabled = CheckBox1.Checked
    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!
    Poste bitte mal mehrere Bilder Deiner GUI mit den beiden aktiven Tabs und male rein, was sich wie verhalten soll.
    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!
    Foto 1: Tab 1 angeklickt, Einstellungen anklicken, linke GroupBox erscheint.
    Foto 2: Tab 2 angeklickt, Einstellungen anklicken, rechte GroupBox erscheint.
    Bilder
    • VB 003.JPG

      21,11 kB, 306×308, 169 mal angesehen
    • VB 004.JPG

      20,73 kB, 307×306, 138 mal angesehen
    Im Button.Click Event machst du ein If mit TabControl.SelectedTab. Je nach SelectedTab setzt du dann Enabled von Gb1 = Iwas und von Gb2 = Not Gb1, also das Gegenteil :)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Obwohl ich es damit schon mal probiert habe und es nicht geklappt hat, funktioniert es jetzt :huh:
    Woran es genau liegt, weiß ich nicht. Vermutlich daran, das ich den Tab "Timer" in "Countdown" umbenannt habe.



    Kevin Hombre:
    Danke für den Hinweis!

    Hier nun der Code:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. If TabControl1.SelectedTab Is Countdown Then
    3. If GroupBox1.Visible = False Then
    4. GroupBox1.Visible = True
    5. Else : GroupBox1.Visible = False
    6. End If
    7. ElseIf TabControl1.SelectedTab Is Uhrzeit Then
    8. If GroupBox2.Visible = False Then
    9. GroupBox2.Visible = True
    10. Else : GroupBox2.Visible = False
    11. End If
    12. End If
    13. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Filmer“ ()

    Filmer schrieb:

    funktioniert es jetzt
    Sieh Dir mal das an:

    VB.NET-Quellcode

    1. Private Sub TabControl1_Selected(sender As System.Object, e As System.Windows.Forms.TabControlEventArgs) Handles TabControl1.Selected
    2. Debug.Print(TabControl1.SelectedIndex.ToString)
    3. 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!