Richtextboxen auf Tabpages

  • .NET (FX) 4.0
  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Digtro_77.

    Richtextboxen auf Tabpages

    Hallo Forengemeide.

    Mit meinen Überlegungen komme ich nach einer langen Nacht nicht weiter.

    Was ich machen will:

    Es existiert ein Tab-Control mit 7 Pages.
    Jede Tabpage enthält 10 Richtextboxen, welche mit Werten aus einer Com-Anwendung gefüllt werden.
    Die empfangenen Daten liegen in einer "Listofstrings".
    Diese Daten, jeweils immer unterschiedlich für jede Tabpage, sollen über den index.changed auf dem ausgewählten Tabpage angezeigt werden.

    Was ich gemacht habe:
    Ich habe auf jedem Tabpage die Richtextboxen im Designer erstellt , und diese in einem Array zusammengefasst.
    Quasi so:

    VB.NET-Quellcode

    1. Dim Anzeige_Batterien_Lade1 As RichTextBox() = {Anz_Bat_1_1, Anz_Bat_1_2, Anz_Bat_1_3, Anz_Bat_1_4, Anz_Bat_1_5, Anz_Bat_1_6, Anz_Bat_1_7, Anz_Bat_1_8, Anz_Bat_1_9, Anz_Bat_1_10,
    2. Anz_Bat_1_11, Anz_Bat_1_12, Anz_Bat_1_13, Anz_Bat_1_14, Anz_Bat_1_15, Anz_Bat_1_16, Anz_Bat_1_17, Anz_Bat_1_18}


    Nun konnte ich hübsch alle Textboxen mit Werten füllen und jede Richtextbox ansprechen.
    Leider habe ich ratz-fatz gemerkt, dass wenn ich das für alle anderen Pages machen will, ich nicht wirklich flexibel bin
    Denn:
    Die Werte sind ja im Hintergrund vorhanden - ich will sie aber immer nur darstellen, wenn ich das jeweilige Tab selektiert habe - und die Aufteilung der Richtextboxen ist immer gleich.
    Bei einem Tabchange muss ich ja vorher auch alle Richtextboxen entfernen, die Anzeigen für das jeweilige Tab laden und diese dann mit Werten füllen.

    VB.NET-Quellcode

    1. For Each a As Control In TabControl1.TabPages(1).Controls ' Index beginnt bei 0!
    2. If TypeOf (a) Is RichTextBox Then
    3. Dim re As RichTextBox = CType(a, RichTextBox)
    4. a.Visible = False 'ausschalten
    5. End If
    6. Next


    Ich stelle mir also vor, dass wenn ich alle Textboxen EIN MAL erstelle, ich diese, JE NACH SELEKTIERTEM TAB mit anderen Daten gefüllt werden.

    Hierzu habe ich über
    Systems.Collections.Generic.List(of Richtextbox) eine Collection erstellt über über "ADD" die verschiedenen "Anz_Bat_1_1"... hinzugefügt.
    Aber auch hier ist es, dass ich ja direkt auf die im Designer gemalten Anzeigen zugreife und jedes Tab andere Anzeigen besitzt.

    Final:
    Wie kann man dies am BESTEN lösen ?
    Die Daten werden wie gesagt im Hintergrund gesammelt, aber ich möchte nur die Anzeigen auf dem aktuellen Tab darstellen ?
    Erzeuge ich dynamisch jetzt bei jedem Wechsel die Richtextboxen und bringe sie zur Anzeige oder greife ich auf bestehende (im Designer gezeichnete) Boxen zurück?
    Oder baue ich einen Container, Group-Box ???

    Wie würdet ihr das lösen ? ?(

    verschoben ~VaporiZed

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

    Ich verstehe das Designprinzip nicht. Wozu braucht es die TabPages? Reicht da nicht einfach ne ListBox oder ne ComboBox, um die passende Werteselektion/-kategorie herzunehmen und dieselben 10 RTB werden einfach nur mit dann den relevanten Daten befüllt?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Das TabControl hatte ich verwendet, um die verschiedenen "Kategorien" anzuzeigen.
    Also einfach nur wegen der Reiter-Funktion...(hö).
    Aber klar - vom Prinzip her wäre dies wohl einfacher:

    Ich habe 1 Panel, mit den Anzeigen.
    Dafür kann ich direkt über das Array auf die Daten zugreifen.
    Dieses blende ich je nach dem welche Tab-Page gewählt wurde mit den jeweiligen Daten ein...???
    @Digtro_77 Wenn die n RTBs auf den n TabPages im Prinzip dasselbe tun, mach Dir doch ein UserControl mit den RTBs, befülle es mit dem Code und pack je eins davon auf die TabPages.
    Oder hab ich da was falsch verstanden?
    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!
    Ja...klar.
    Manchmal hakt es in der Birne... 8-)

    Hab jetzt ein Panel erstellt und dieses liegt über dem Anzeigefeld des Tabcontrols.
    Das kann ich dann je nach Aktivierung einblenden oder eben befüllen...schäm...