lempy Geschrieben 9. Mai 2014 Teilen Geschrieben 9. Mai 2014 Hallo Leute Bin gerade dabei ein Programm zu schreiben, dass Einträge in einer TextBox in eine Listbox übergibt und anschließend den Inhalt der Listbox in eine XML Datei speichert. Das Schreiben in die TextBox und das Übernehmen in die Listbox mittels eines Buttons funktioniert. Der Inhalt in der Listbox soll dann über einen Button in einer XML Datei gespeichert (geschrieben) werden. Und genau da liegt der Hase im Pfeffer begraben. Er listet mir zwar die Anzahl der Einträge auf, aber er schreibt nicht meine Einträge in den "Text" Tag. So sieht meine XML Datei aus: <?xml version="1.0" encoding="UTF-8"?> -<eintraege> -<eintrag> <text>System.Windows.Forms.ListBox+ObjectCollection</text> </eintrag> -<eintrag> <text>System.Windows.Forms.ListBox+ObjectCollection</text> </eintrag> -<eintrag> <text>System.Windows.Forms.ListBox+ObjectCollection</text> </eintrag> </eintraege Was ist da schief gelaufen? Keine Ahnung. Das ist mein Code: #pragma once namespace aufgabe3 { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace System::Xml; /// <summary> /// Zusammenfassung für Form1 /// /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch /// die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern, /// das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt. /// Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen /// arbeiten, die diesem Formular zugewiesen sind. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: // Eigene Attributte // Für den Dateiname String ^xmlDateiname; Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // // setzen des Dateinamens xmlDateiname = IO::Path::ChangeExtension(Application::ExecutablePath,".xml"); } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::ListBox^ listBox1; protected: private: System::Windows::Forms::TextBox^ textBox1; private: System::Windows::Forms::Button^ buttonUebernehmen; private: System::Windows::Forms::Button^ buttonSpeichern; private: /// <summary> /// Erforderliche Designervariable. /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->listBox1 = (gcnew System::Windows::Forms::ListBox()); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->buttonUebernehmen = (gcnew System::Windows::Forms::Button()); this->buttonSpeichern = (gcnew System::Windows::Forms::Button()); this->SuspendLayout(); // // listBox1 // this->listBox1->FormattingEnabled = true; this->listBox1->Location = System::Drawing::Point(12, 12); this->listBox1->Name = L"listBox1"; this->listBox1->Size = System::Drawing::Size(144, 225); this->listBox1->Sorted = true; this->listBox1->TabIndex = 0; // // textBox1 // this->textBox1->Location = System::Drawing::Point(172, 12); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(119, 20); this->textBox1->TabIndex = 1; // // buttonUebernehmen // this->buttonUebernehmen->Location = System::Drawing::Point(172, 69); this->buttonUebernehmen->Name = L"buttonUebernehmen"; this->buttonUebernehmen->Size = System::Drawing::Size(119, 23); this->buttonUebernehmen->TabIndex = 2; this->buttonUebernehmen->Text = L"Eintrag Übernehmen"; this->buttonUebernehmen->UseVisualStyleBackColor = true; this->buttonUebernehmen->Click += gcnew System::EventHandler(this, &Form1::buttonUebernehmen_Click); // // buttonSpeichern // this->buttonSpeichern->Location = System::Drawing::Point(172, 107); this->buttonSpeichern->Name = L"buttonSpeichern"; this->buttonSpeichern->Size = System::Drawing::Size(119, 23); this->buttonSpeichern->TabIndex = 3; this->buttonSpeichern->Text = L"Liste Speichern"; this->buttonSpeichern->UseVisualStyleBackColor = true; this->buttonSpeichern->Click += gcnew System::EventHandler(this, &Form1::buttonSpeichern_Click); // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(297, 261); this->Controls->Add(this->buttonSpeichern); this->Controls->Add(this->buttonUebernehmen); this->Controls->Add(this->textBox1); this->Controls->Add(this->listBox1); this->Name = L"Form1"; this->Text = L"Form1"; this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void buttonUebernehmen_Click(System::Object^ sender, System::EventArgs^ e) { listBox1->Items->Add(Convert::ToString(textBox1->Text)); } private: System::Void buttonSpeichern_Click(System::Object^ sender, System::EventArgs^ e) { // die Einstellungen setzen XmlWriterSettings ^einstellungen = gcnew XmlWriterSettings; einstellungen->Indent = true; xmlDateiname = "liste.xml"; // Die Datei erzeugen XmlWriter ^xmlSchreiben = XmlWriter::Create(xmlDateiname, einstellungen); xmlSchreiben->WriteStartDocument(); // Die Wurzel schreiben xmlSchreiben->WriteStartElement("eintraege"); for (Int32 i = 0; i < listBox1->Items->Count; i++) { // den Knoten eintrag erzeugen xmlSchreiben->WriteStartElement("eintrag"); // die Einträge schreiben xmlSchreiben->WriteElementString("text",listBox1->Items->ToString()); // den Knoten abschließen xmlSchreiben->WriteEndElement(); } xmlSchreiben->WriteEndDocument(); xmlSchreiben->Close(); } }; } Lieben Dank für Eure Hilfe lempy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 9. Mai 2014 Teilen Geschrieben 9. Mai 2014 (bearbeitet) Mit Items.ToString() gibst du den Typ der Collection als String aus, was völlig korrekt eine "System.Windows.Forms.ListBox+ObjectCollection" ist. Du musst über deine Iterationsvariable auf den aktuellen index zugreifen und dir dessen Text ausgeben lassen. Also listbox1.Items.PropertyDasDuAusgeben willst. Gruß, Goulasz P.S.: Das ganze dürfte sich auch ohne Schleife als LINQ-Ausdruck beschreiben lassen. P.P.S.: Design und Logik in einem Dokument ist bäh. Bearbeitet 9. Mai 2014 von Goulasz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lempy Geschrieben 9. Mai 2014 Autor Teilen Geschrieben 9. Mai 2014 Hey Super!!! Klappt jetzt. Hatte so was ähnliches an der falschen Stelle gehabt, hat natürlich dann nicht funktioniert. Hab dabei aber nicht an die Items gedacht. Recht lieben Dank lempy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.