Inhalt einer Textbox als Wert an eine zweite Klasse übergeben.

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

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Marvin315.

    Inhalt einer Textbox als Wert an eine zweite Klasse übergeben.

    Hallo Community,

    ich stehe aktuell vor einem Problem und zwar versuche ich Werte aus einer Textbox in ein XML-Dokument zu speichern.
    Da ich ein absoluter VB.Net- und Programmier- Neuling bin klappt dies nicht bei mir.
    Die Funktion um die Daten in einem XML-Dokument zu speichern ist in einer zweiten Klasse.
    Deshalb kann ich auch leider nicht ganz einfach sagen "xml_Attribut1 = tbServername.Text".
    Wie bekomme ich es hin der zweiten Klasse meine Werte aus der TextBox zu übergeben?
    Aktuell versuche ich die Werte in einem Array zu speichern, was aber nur mäßig klappt.
    Und zwar werden aktuell nur die Werte übertragen die standardmäßig in den Textboxen stehen.
    Sollten ich mich unklar ausgedrückt haben, versuch ich gerne Frage zu beantworten.
    Solltet Ihr überflüssigen Code finden könnt Ihr mich auch gerne darüber informieren.
    Über Hilfe würde ich mich sehr freuen.
    Ich bedanke mich schon mal im voraus.

    Klasse 1 MainWindow

    VB.NET-Quellcode

    1. Imports System.Xml
    2. Imports System.Text
    3. Imports System.IO
    4. Public Class MainWindow
    5. Public Instanz As String
    6. Public Servername As String
    7. Public Benutzer As String
    8. Public Kennwort As String
    9. Public arrTb As String() = {Servername, Instanz, Benutzer, Kennwort}
    10. Private Sub btnstore1_Click(sender As Object, e As RoutedEventArgs) Handles btnstore1.Click
    11. End Sub
    12. Public Sub btnstore2_Click(sender As Object, e As RoutedEventArgs) Handles btnstore2.Click
    13. Instanz = tbinstanz.Text
    14. Servername = tbservername.Text
    15. Benutzer = tbuser.Text
    16. Kennwort = tbpw.Text
    17. Dim xmlC As New XMLConverter
    18. xmlC.xmldoc()
    19. End Sub
    20. End Class


    Klasse 2 XMLConverter

    VB.NET-Quellcode

    1. Imports System.Xml
    2. Imports System.Text
    3. Imports System.IO
    4. Public Class XMLConverter
    5. Public Sub xmldoc()
    6. Dim xmlwerte As New MainWindow
    7. Dim xmldoc As XmlDocument
    8. xmldoc = New XmlDocument
    9. Dim DateiPfad = "C:\Users\%Username%\Desktop\Config.xml"
    10. Dim enc As New System.Text.UnicodeEncoding
    11. Dim XMLobj As Xml.XmlTextWriter = New Xml.XmlTextWriter(DateiPfad, enc)
    12. With XMLobj
    13. .Formatting = Xml.Formatting.Indented
    14. .Indentation = 4
    15. .WriteStartDocument()
    16. .WriteStartElement("DatabaseServer")
    17. .WriteEndElement()
    18. .Close()
    19. End With
    20. xmldoc.Load(DateiPfad)
    21. Dim xml_Termin As XmlNode
    22. xml_Termin = xmldoc.CreateElement("Database")
    23. Dim xml_Attribut1 As XmlAttribute
    24. xml_Attribut1 = xmldoc.CreateAttribute("Instanz")
    25. xml_Attribut1.InnerText = xmlwerte.arrTb(1) & ";"
    26. Dim xml_Attribut2 As XmlAttribute
    27. xml_Attribut2 = xmldoc.CreateAttribute("Benutzer")
    28. xml_Attribut2.InnerText = xmlwerte.arrTb(2) & ";"
    29. Dim xml_Attribut3 As XmlAttribute
    30. xml_Attribut3 = xmldoc.CreateAttribute("Kennwort")
    31. xml_Attribut3.InnerText = xmlwerte.arrTb(3) & ";"
    32. Dim xml_Attribut4 As XmlAttribute
    33. xml_Attribut4 = xmldoc.CreateAttribute("Servername")
    34. xml_Attribut4.InnerText = xmlwerte.arrTb(0) & ";"
    35. xml_Termin.Attributes.Append(xml_Attribut4)
    36. xml_Termin.Attributes.Append(xml_Attribut1)
    37. xml_Termin.Attributes.Append(xml_Attribut2)
    38. xml_Termin.Attributes.Append(xml_Attribut3)
    39. xmldoc.DocumentElement.AppendChild(xml_Termin)
    40. xmldoc.Save(DateiPfad)




    MFG Marvin

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

    Der Klasse XMLConverter fehlen Properties und/oder ein Konstruktor der deine Variablen verarbeitet und als Parameter erwartet.
    "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
    Danke für deine schnelle Rückmeldung.
    Ein Problem was mir beim Debugging auffällt ist, das bei der Übergabe des Arrays von Klasse MainWindow an Klasse XMLConverter, die Werte des Arrays leer sind.
    Tut mir leid aber als blutiger Anfänger fallen mir die leichtesten Dinge noch relativ schwer. Ich habe vorher nie mit mehreren Klassen gearbeitet.

    VB.NET-Quellcode

    1. ​Imports System.Xml
    2. Imports System.Text
    3. Imports System.IO
    4. Public Class XMLConverter
    5. Dim xmlwerte As New MainWindow
    6. Private Instanz As String = xmlwerte.arrTb(1) 'Diese Werte sind leer, liegt das am fehlendem Konstruktor oder an fehlenden Properties?
    7. Private Servername As String = xmlwerte.arrTb(0)
    8. Private Benutzer As String = xmlwerte.arrTb(2)
    9. Private Kennwort As String = xmlwerte.arrTb(3)
    10. 'Public Property PInstanz() As String
    11. 'Get
    12. 'Return Instanz
    13. 'End Get
    14. 'Private Set(value As String)
    15. 'End Set
    16. 'End Property
    17. Public Sub xmldoc()
    18. Dim xmldoc As XmlDocument
    19. xmldoc = New XmlDocument
    20. Dim DateiPfad = "C:\Users\%Username%\Desktop\Config.xml"
    21. Dim enc As New System.Text.UnicodeEncoding
    22. Dim XMLobj As Xml.XmlTextWriter = New Xml.XmlTextWriter(DateiPfad, enc)
    23. With XMLobj
    24. .Formatting = Xml.Formatting.Indented
    25. .Indentation = 4
    26. .WriteStartDocument()
    27. .WriteStartElement("DatabaseServer")
    28. .WriteEndElement()
    29. .Close()
    30. End With
    31. xmldoc.Load(DateiPfad)
    32. Dim xml_Termin As XmlNode
    33. xml_Termin = xmldoc.CreateElement("Database")
    34. Dim xml_Attribut1 As XmlAttribute
    35. xml_Attribut1 = xmldoc.CreateAttribute("Instanz")
    36. xml_Attribut1.InnerText = Instanz & ";"
    37. Dim xml_Attribut2 As XmlAttribute
    38. xml_Attribut2 = xmldoc.CreateAttribute("Benutzer")
    39. xml_Attribut2.InnerText = Benutzer & ";"
    40. Dim xml_Attribut3 As XmlAttribute
    41. xml_Attribut3 = xmldoc.CreateAttribute("Kennwort")
    42. xml_Attribut3.InnerText = Kennwort & ";"
    43. Dim xml_Attribut4 As XmlAttribute
    44. xml_Attribut4 = xmldoc.CreateAttribute("Servername")
    45. xml_Attribut4.InnerText = Servername & ";"
    46. xml_Termin.Attributes.Append(xml_Attribut4)
    47. xml_Termin.Attributes.Append(xml_Attribut1)
    48. xml_Termin.Attributes.Append(xml_Attribut2)
    49. xml_Termin.Attributes.Append(xml_Attribut3)
    50. xmldoc.DocumentElement.AppendChild(xml_Termin)
    51. xmldoc.Save(DateiPfad)
    52. End Class
    Um das ganze hier abzukürzen,
    ich versuche ein Programm zu schreiben, welches eine Datenbankverbindung aufbaut.
    Man hat eine Oberfläche in der man Servername, Instanz, Benutzer und Kennwort eingeben kann.
    Die Werte sollen in einer XML-Datei gespeichert werden und beim erneuten Starten des Programms sollen die Werte ausgelesen werden und in die entsprechenden Textboxen gefüllt werden.
    Macht es hier überhaupt Sinn für das XML-Lesen und schreiben eine andere Klasse zu erstellen oder habe ich hier den Sinn von Klassen verfehlt?
    Bau Properties in deine Klasse ein. In der Form instanziierst du die Klasse und weist den Properties die Daten zu:

    Dim xmlC As New XMLConverter
    xmlC.Servername = "foo"
    xmlC.Imstanz = "foo2"
    Usw.
    xmlC.xmldoc()
    "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

    Marvin315 schrieb:

    VB.NET-Quellcode

    1. Dim xmlwerte As New MainWindow
    What :?:
    In diesem Kontext wird kein Fenster instanziiert, schon gar nicht das Hauptfenster :!:
    Das solltest Du mit nem Event machen.
    Um Werte von einer aufrufenden in eine aufgerufene Klasse zu übergeben nimmt man Properties.
    Für Formen gugst Du hier.
    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!