Mehrere Label und Textboxen in .WriteAttributeString() ansprechen

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

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

    Mehrere Label und Textboxen in .WriteAttributeString() ansprechen

    Guten Abend,
    Ich bin im Moment dabei eine XML zu erstellen. Ich habe im Moment 6 Labels und 6 dazugehörige Textboxen (Später werden es noch mehr). Jeder dieser Labels soll mit der Dazugehörigen Textbox in die XML. Damit ich später aber nicht 30 mal

    VB.NET-Quellcode

    1. .WriteAttributeString(label1.text, textbox1.text)

    schreiben muss, wollte ich es in einer Schleife packen und mein Glück so probieren. Mein Code sieht bisher so aus:

    VB.NET-Quellcode

    1. Dim Zähler As Integer = 0
    2. Dim labelzaehler As Integer = 1
    3. Dim label As String = "Label"
    4. Dim textboxzaehler As Integer = 1
    5. Dim textbox As String = "textbox"
    6. Do
    7. textbox = ("textbox" & textboxzaehler & ".text")
    8. label = ("label" & labelzaehler & ".text")
    9. .WriteAttributeString(label, textbox)
    10. Zähler += 1
    11. labelzaehler += 1
    12. textboxzaehler += 1
    13. Loop Until Zähler = 6


    Jedoch wird in meine XML nun dies ausgegeben:

    XML-Quellcode

    1. <Flugzeuge>
    2. <Flugzeug label1.text="textbox1.text" label2.text="textbox2.text" label3.text="textbox3.text" label4.text="textbox4.text" label5.text="textbox5.text" label6.text="textbox6.text" />
    3. </Flugzeuge>


    Den Fehler habe ich schon erkannt. Da ich alles in die " " setze, sucht er nicht die passende Textbox oder das passende label raus, sondern schreib es einfach nur hinein. Den Fehler habe ich erkannt, jedoch finde ich keine Lösung für mein Problem.
    Ich hoffe ihr könnt mir helfen.
    mfG
    Daniel

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

    Ich bin mir grad nicht sicher, aber in VB.NET sollte das ohne Option Strict nicht gehen: ​"textbox" & textboxzaehler & ".text"
    Strings sind Strings und Zahlen sind Zahlen, die addiert man nicht einfach ohne Konvertierung. Einfache Frage, was wäre für dich das Ergebnis von "1" + "1"? "2" vllt? 2? Oder doch "11"?

    Btt: Guck dir mal Me.Controls("MyTextBox") an, das returnt das entsprechende Control je nach Name.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Die Lösung von @Plexian ist auch, die die ich dafür nehmen würde.

    1. Guck ob die Controls anständig durchnummeriert sind (also z.B.: TextBox1, Label1, TextBox2, Label2, ...)
    2. Eine For-Schleife die von 1-6 durchläuft.
    3. In der For-Schleife holst du dir das Control mittels

    Plexian schrieb:

    Me.Controls("MyTextBox")

    4. Du castest die Controls zu TextBox und Label (vorher prüfen, was es ist)
    5. Schreib die Sachen aus <controlvariable>.Text in die XML
    Hmkay. :|
    @Daenni: Mit

    VB.NET-Quellcode

    1. textbox = ("textbox" & textboxzaehler & ".text")
    2. label = ("label" & labelzaehler & ".text")

    schreibst Du in Deine Variablen einen Text namens "textbox1.text" rein. Genausogut könntest Du "Räuber Hotzenplotz" reinschreiben. Wie @Plexian schon schrieb: Du musst quasi ne Schleife über Deine Controls machen und den Inhalt der Control.Text-Variable reinschreiben.

    Grundsätzlich wäre es sinnvoller, bereits eine List(Of TextBox) und List(Of Label) zu haben, denn ansonsten müsstest Du mit einer Schleife die CE-Namen prüfen. Wehe dem Moment, in dem Du die CE-Namen änderst.
    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.
    @Daenni Ganz andere Herangehensweise.
    Schmeiß die Labels und TextBoxen raus, denn nächste Woche werden es bereits 9 oder 10 sein.
    Nimm ein DataGridView und binde da als DataSource eine DataTable dran.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich glaube eher, das hier aufgrund von fehlendem Fachwissen etwas versucht wird, was nicht sinnvoll ist.

    @Daenni was genau hast du den vor? Labels und Textboxen in eine xml zu schreiben ist wohl vermutlich nicht der eigentliche Wunsch, oder? Vielmehr möchtest du wohl eine ansammlung von Daten (welche in Textboxen dargestellt werden) als xml speichern.

    Daher evtl. mal mit Objektorientierung und serialisierung beschäftigen?

    Da du selbst schon schreibst
    Damit ich später aber nicht 30 mal(...) schreiben muss
    Wäre es vielleicht am einfachsten statt 30 Textboxen, dieses wunderbare DataGridView zu nutzen. Ist dieses an ein DataTable gebunden, kann man dieses mit ultra wenig aufwand ganz easy als xml speichern.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

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

    Irgendwie ist es nicht so verständlich was hier gewünscht wird.
    Eventuell kann dir ja geholfen werden, wenn du genaure Infos über dein Vorgehen abgibst. Was möchtest du als Ziel erreichen. Dient die XML als gespeicherter Datensatz, die nachher wieder in die Textboxes und Labes eingelesen werden?

    Im Anhang findest du einen Ansatz. Es soll lediglich zeigen wie es ungefähr geht, und das ohne Bindig oder dergleichen. Ist also extrem verbesserungswürdig.

    Freundliche Grüsse

    exc-jdbi
    Dateien
    • Basis.zip

      (11,95 kB, 123 mal heruntergeladen, zuletzt: )