Tab Page während der Laufzeit erweitern

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von programmer71.

    Tab Page während der Laufzeit erweitern

    Hallo zusammen,
    ich möchte in meinem kleinen Projekt eine Tab Control einbauen deren Pages ich während der Laufzeit erweitern kann.
    Erzeugt werden die neuen Pages über Eingabe in eine Textbox.
    Diese Erweiterungen sollen auch nach dem Neustart wieder zur Verfügung stehen.
    Ich habe jetzt damit angefangen :

    Dim Projektliste As New List(Of TabPage)

    Nun weiß ich nicht so recht weiter wie ich die Textboxeinträge in die Liste bekomme, wie ich sie (z.B. über My.settings) speichere und wie ich sie beim neustart wieder abrufe.

    Kann mir jemand einen Denkanstoss geben?
    Textboxeinträge in die Liste:

    VB.NET-Quellcode

    1. Projektliste.Add(New TabPage(...))

    Speichern einer/mehrerer Tabpages mit mehreren Eigenschaften: vb-paradise.de/programmieren/g…ngs-speichern/#post324867
    Hi Rod,
    also wie bau ich meine vorh. Projektliste in eine String Collection ein?

    @nafets...
    das hat gefunzt... hatte beim meinen Versuchen immer das New vergessen.



    Args... sy


    Hat geklappt danke

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

    Rodario schrieb:

    also wie bau ich meine vorh. Projektliste in eine String Collection ein?
    Projekt -> Eigenschaften -> Settings
    und dann halt eine List hinzufügen.
    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!
    Habe leider doch noch n Problem beim Laden der Settings

    Füge mal ein Bild an welches den Fehler veranschaulicht.


    Edit:
    Leider funktioniert auch das speichern der neuen Tabs in die string collection nicht :
    Bilder
    • Tabs.jpg

      46,91 kB, 340×148, 134 mal angesehen
    • tabs2.jpg

      282,14 kB, 750×331, 134 mal angesehen

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

    Da musst Du mal gezielt nach suchen.
    System.Collections.Specialized.StringCollection
    MSDN
    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!
    Beim ersten Bild musst du bei 'TAB()' die Klammern wegnehmen und als Datentyp String (so: 'For Each TAB As String In ...'), beim zweiten scheint der Text der TabPage leer zu sein, mach halt einfach mal einen Haltepunkt und guck dir den Inhalt von TAB.Text an.

    nafets3646 schrieb:

    Beim ersten Bild
    Hättest Du Dir das 2. Bild auch angesehen, dann ...
    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!
    hm, kriege den Fehler nicht weg....
    weiß auch nicht wie ich mir den Inhalt von Tab.text ansehen kann wenn ich vorher nen Haltepunkt setze...
    Aber vllcht mache ich ja auch beim hinzufügen der Page einen Fehler, hier mal der Code:

    VB.NET-Quellcode

    1. Dim tbNew As New TabPage
    2. Dim tpName As String = txtNewProject.Text
    3. tbNew.Text = tpName
    4. tcProjekt.TabPages.Add(tbNew)
    5. tbNew.Name = tpName
    6. If Not tcProjekt.TabPages.Count < 0 Then
    7. For Each tbNew In tcProjekt.TabPages
    8. My.Settings._Tabs.Add(tbNew.Name)
    9. Next
    10. Else
    11. MsgBox("nix da")
    12. End If

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

    Probiers doch mal so:

    VB.NET-Quellcode

    1. Dim tbName As String = txtNewProject.Text
    2. Dim tbNew As New TabPage With {.Name = tbName, .Text = tbName}
    3. My.Settings._Tabs.Add(tbName)

    Das müsstest du halt alles reinmachen, wenn du eine neue Tabpage hinzufügst. Das funktioniert aber nur solange, wie du die geschlossenen Tabpages auch wieder entfernst.
    Die Fehlermeldung ist die selbe wie vorher, aber wie meinst du deinen Hinweis "Das funktioniert aber nur solange, wie du die geschlossenen Tabpages auch wieder entfernst."

    edit:
    Packe noch mal ein Bildchen von den Settings rein.
    Bilder
    • tabs3.jpg

      111,27 kB, 608×206, 128 mal angesehen

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

    Dann weiss ich auch nicht mehr weiter :(. Das mit den geschlossenen Tabpages meinte ich so, dass, wenn du eine Tabpage schließt/nicht speichern willst, diese manuell aus der Liste entfernen musst.
    So wars auch geplant... iwann sind die Projekte nicht mehr aktuell und ich lösche die TabPages dann händisch.

    Hat denn sonst jemand ne Idee warum das nicht klappt?
    Da kommt ja noch mehr auf mich zu... auf den TabPages liegen andere Steuerelemente die auch noch iwie gespeichert werden müsse.

    Rodario schrieb:

    auf den TabPages liegen andere Steuerelemente die auch noch iwie gespeichert werden müsse.
    Kannst Du das mal etwas näher erläutern?
    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!
    Also auf den Tabs werden Checkboxen Labels und Textboxen liegen, in denen natürlich auch was drinsteht^^
    Das ganze soll eine Aufgabenliste sein die Projekten zugeordnet werden.
    Textboxen nehmen die Aufgaben auf... die Checkboxen haken ab ob die Aufgaben erledigt wurden.
    Par labels als Überschriften müssen auch sein.

    Füge mal ein Bildchen ein zu Veranschaulichung
    Bilder
    • Beispiel.jpg

      87,12 kB, 723×488, 112 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Rodario“ ()

    Mach dir ne Function, die Controls inklusive den wichtigsten Einstellungen in einen String umschreibt und zurück. Diese kannst du dann verwenden, um die Steuerelemente zu Speichern.
    So z.B.:

    Quellcode

    1. [TabPage="TabPage1] = ("Dies ist eine Testtabpage")
    2. {
    3. [Button=("Button1", "5", "5", "100", "20")] = ("Und dies ist ein Testbutton")
    4. [Button=("Button2", "200", "200", "50", "30")] = ("Dies ist der zweite Testbutton")
    5. [Label=("Label1", "0", "0")] = ("Dies ist ein weiteres Testcontrol, ein Label")
    6. [TextBox=("TextBox1", "10", "300", "100", "20")] = ("")
    7. [CheckBox=("CheckBox1", "100", "100")] = ("Testcheckbox", "True")
    8. }
    9. [TabPage="TabPage2] = ("Dies ist eine zweiteTesttabpage")
    10. {
    11. [Button=("Button1", "5", "5", "100", "20")] = ("Und dies ist ein Testbutton")
    12. [Button=("Button2", "200", "200", "50", "30")] = ("Dies ist der zweite Testbutton")
    13. [Label=("Label1", "0", "0")] = ("Dies ist ein weiteres Testcontrol, ein Label")
    14. [TextBox=("TextBox1", "10", "300", "100", "20")] = ("")
    15. [CheckBox=("CheckBox1", "100", "100")] = ("Testcheckbox", "True")
    16. }