Komfortabel mit vielen Panels arbeiten

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Komfortabel mit vielen Panels arbeiten

    Hallo,

    in meinem Programm arbeite ich mit 20+ Panels. Nun ist das halt super lästig, wenn ich immer erst 10 wegziehen muss, dass ich an ein bestimmten Panel komme, um da noch einen Button oder so einzufügen.

    Daher meine Frage: Gibt es irgendeine Möglichkeit alle Panels einzeln aufzurufen, wie z.B. mit Forms und Klassen auch? Bis auf die Dokumentgliederung habe ich nichts gefunden und die schafft auch keine Besserung hinsichtlich Bearbeitung der Panels.

    Wie macht ihr das, wenn ihr mit vielen Panels arbeitet? Bin auch gerade erst angefangen und von daher auch für andere Ansätze offen.
    Hammer :D Besten Dank! Genau sowas habe ich gesucht! Will meine eigenen Buttons benutzen und deshalb kam ein Tabcontrol mit den unschönen Reitern nicht in Frage. Wusste leider nicht, dass man die auch mit Hilfe von entsprechendem Code ausstellen kann.

    ErfinderDesRades schrieb:

    wie du zu 20 Panels kommst

    Die Navigation zwischen Optionen wollte ich wie in einer App aufbauen, daher brauche ich halt einige Tabs.

    Eventuell noch eine Idee, wie ich einen "zentralen" Zurückbutton für das komplette Tabcontrol einbauen könnte? Ich hätte mir das so gedacht, dass ich mir bei jedem Tabwechsel den entsprechenden Tabindex in einer Liste speicher. Mit dem Zurückbutton könnte ich dann die Liste von hinten nach vorne durchgehen. Oder gibts dafür eine smartere Lösung?

    rdmguy schrieb:

    en entsprechenden Tabindex in einer Liste speicher
    Wenn Du nur +1 und -1 zulässt, ist das ganz easy, da brauchst Du keine Liste, Du musst nur den Overflow / Underflow abfangen.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Wenn Du nur +1 und -1 zulässt

    Das ging leider nicht, weil ich flexibler sein musste. Habe aber selbst eine Lösung gefunden und die Idee mit einer Sub für alle Buttons aus dem verlinkten Tut von EDR geklaut. :whistling:

    Für Interessierte:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private previousTabs As New List(Of TabPage)
    2. Private Sub HomeNavi(ByVal sender As Object, ByVal e As EventArgs) _
    3. Handles btnHome.Click, btnLogfile.Click 'etc...
    4. previousTabs.Add(TabControl1.SelectedTab)
    5. Select Case True
    6. Case sender Is btnHome
    7. TabControl1.SelectTab(TabHome)
    8. Case sender Is btnLogfile
    9. TabControl1.SelectTab(TabLogfile)
    10. '.
    11. '.
    12. 'etc...
    13. End Select
    14. lbPanelLocation.Text = TabControl1.SelectedTab.Text
    15. End Sub
    16. Private Sub btnBack_Click(ByVal sender As Object, ByVal e As EventArgs) _
    17. Handles btnBack.Click
    18. If previousTabs.Count >= 1 Then
    19. TabControl1.SelectTab(previousTabs(previousTabs.Count - 1))
    20. previousTabs.RemoveAt(previousTabs.Count - 1)
    21. End If
    22. lbPanelLocation.Text = TabControl1.SelectedTab.Text
    23. End Sub

    Ich hatte es zuerst über den TabControl.SelectedIndex probiert, aber das hat leider nicht funktioniert wie es sollte. Hatte dabei aber auch den Index in eine List(Of Integer) gespeichert. Mir fällt auch anders nichts ein, wie ich sonst rückwirkend feststellen könnte: Tab1, Tab20, Tab15, Tab4, Tab1 etc... Lasse mich da aber gerne eines besseren belehren.

    rdmguy schrieb:

    Ich hatte es zuerst über den TabControl.SelectedIndex probiert, aber das hat leider nicht funktioniert wie es sollte
    Wie hat es denn funktioniert?

    Bei mir gehts zB eine Tabpage zurück (also der Tab links vom aktuellen wird selected), wenn ich sowas mach:

    VB.NET-Quellcode

    1. TabControl1.SelectedIndex -= 1


    rdmguy schrieb:

    wie ich sonst rückwirkend feststellen könnte: Tab1, Tab20, Tab15, Tab4, Tab1 etc...
    wie kommt denn diese wirre Reihenfolge zustande?


    ErfinderDesRades schrieb:

    Reihenfolge

    Stell es dir vor wie im Browser, da kannste ja auch zig verschiedene Seiten ansurfen und mit der Zurücktaste den kompletten Weg wieder zurückgehen. Sowas wollte ich haben und genau das funktioniert mit dem Code von mir. Das gleiche mit TabControl1.SelectedIndex -= 1/ TabControl1.SelectedIndex +=1 zu realisieren geht in dem Fall nicht, denke ich mal.

    rdmguy schrieb:

    weil ich flexibler sein musste
    Ohne Tabs kannst Du doch eh nur +1 oder -1 gehen, oder hast Du Button für +-2, +-3 und so Schritte?
    Wie navigierst Du zwischen den Tabs?
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Hi
    @ErfinderDesRades korrekt, hatte das vielleicht nicht genau genug beschrieben. Es ist wie im Browser eine Art Verlauf, den ich mit dem Button zurückgehen möchte.

    @RodFromGermany Ich navigiere mit Buttons, die auf den jeweiligen Panels entsprechend angeordnet sind und zusätzlich einen Home-Button sowie Zurück-Button, die zentral von überall aus angesteuert werden können.

    rdmguy schrieb:

    Die Navigation zwischen Optionen wollte ich wie in einer App aufbauen [...]

    Beispiel Smartphone:
    Home(Tab0) -> Einstellungen(Tab1) -> mobiles Netz(Tab3) -> Hotspot(Tab4)
    oder Home(Tab0) -> Einstellungen(Tab1) -> mobiles Netz(Tab3) -> Daten(Tab5)
    oder Home(Tab0) -> Kontake(Tab2) -> Name(Tab6) -> Nachricht senden(Tab7)

    Wenn ich da jetzt bei Kontake(Tab2) index-1 mache, komme ich bei Einstellungen(Tab1) raus, muss aber bei Home(Tab0) landen. Ich hoffe es ist jetzt verständlicher.

    rdmguy schrieb:

    muss aber bei Home(Tab0) landen.
    Speichere Dir einfach die .SelectedIndex-Werte in einem New Stack(Of Integer).
    Beim Navigieren Pushst Du den Wert auf den Stack, beim Verfolgen der History Popst Du den (vor)letzten Wert und setzt ihn als .SelectedIndex (wobei er automatisch wieder gePushed werden muss.
    Feddich.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!