kompletter form in Datei speichern
-
Hallo,
ich habe mir ein Form erstellt mit einigen Labeln und Textboxen. Gruppiert habe ich diese mit einem Panel. Ich möchte den From mit dem jeweiligen aussehen und allem drum un dran als word-Dokument komplett speichern. Einzelne Textboxen an sich zu speichern klappt. Nur das Design haut nicht hin Zum speichern benutze ich im Moment die Funktion sw->write.
Gibt es dafür irgendeine Lösung, oder muss ich jedes einzelne Textfeld einzelnd mit der Funktion sw->write aufrufen?bool CScherenFensterEingabe::save(String ^s_Dateiname) //, String ^saveFileDialog1) { if (s_Dateiname == nullptr) { if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) s_Dateiname = saveFileDialog1->FileName; else return false; } try { StreamWriter ^sw = gcnew StreamWriter(s_Dateiname, false, Encoding::GetEncoding("windows-1252")); // Speichern sw->Write(Ausgabe_stat_Moment->Text); sw->Close(); // Fensteroberfläche und interne Felder aktualisieren this->s_Dateiname = s_Dateiname; dirty = false; miDatei_Speichern_unter->Enabled = false; return true; } catch (IOException^) { MessageBox::Show("Datei konnte nicht gespeichert werden.", "Fehler"); } return false; }
-
Du könntest Dir deine TextBox Control in eine Liste packen und dann darüber iterieren.
-
Ich möchte gerne zwei Textboxen speichern.
Im FormTextbox1-Frage: Textbox2-Antwort
Die Andordnung möchte ich nun auch so in die Datei speichern. Bis jetzt sind alle Versuche Fehlgeschlagen. Hat vielleicht jemand eine Idee?
-
Du kannst die Word Interop Bibliotheken nutzen. Die sind allerdings nur für C# und VB dokumentiert ind der MDSN, musst es Dir also selbst erschließen, wie die Syntax in C++ geht.
Ein Beispiel habe ich unter diesen Posting geschrieben.
LG Solick
-
WAS willst Du denn genau speichern?
Am einfachsten geht es mit dem XML-Serialisierer...
#using <mscorlib.dll> #using <System.Xml.dll> using namespace System; using namespace System::IO; using namespace System::Xml::Serialization; public ref class Foo { public: // Alle Daten zum Speichern müssen "public:" sein: String^ Text1; String^ Text2; int Val1; void Save(String^ fileName) { StreamWriter s(fileName); XmlSerializer ser(Foo::typeid); ser.Serialize(%s, this); } static Foo^ Load(String^ fileName) { StreamReader s(fileName); XmlSerializer ser(Foo::typeid); return safe_cast<Foo^>(ser.Deserialize(%s)); } }; int main() { Foo f1; // Setze meine Daten... f1.Text1 = "Hallo"; f1.Text2 = "Welt"; f1.Val1 = 12; // Speichere die Datei: f1.Save("Test.txt"); // Lade die Datei wieder: Foo^ f2 = Foo::Load("test.txt"); // Verifiziere, dass auch alles korrekt gespeichert/gelesen wurde: System::Diagnostics::Debug::Assert(f1.Text1->CompareTo(f2->Text1) == 0); System::Diagnostics::Debug::Assert(f1.Text2->CompareTo(f2->Text2) == 0); System::Diagnostics::Debug::Assert(f1.Val1 == f2->Val1); }
-
Danke für die Antworten.
@Kalmbach: Hab veruscht Ihr Code Beispiel bei mir anzuwenden. Ich bekomme vom Compiler keine Fehlermeldung, aber sobald ich aus meinem Form speichern möchte erhalte ich folgende Fehlermeldung :
"Eine nicht behandelte Ausnahme des Typs "System.InvalidOperationException" ist in System.Xml.dll aufgetreten.Zusätzliche Informationen: Fehler beim Reflektieren des Typs 'BerechnungsprogrammVersion10.C_Fenster'.
" und mein Programm bricht ab.Der Code dazu:
bool C_Fenster::save(String ^s_Dateiname) { if (s_Dateiname == nullptr) { if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) s_Dateiname = saveFileDialog1->FileName; else return false; } try { /*StreamWriter ^sw = gcnew StreamWriter(s_Dateiname, false, Encoding::GetEncoding("windows-1252")); */ StreamWriter sw (s_Dateiname); XmlSerializer ser(C_Fenster::typeid); ser.Serialize(%sw, this); // Fensteroberfläche und interne Felder aktualisieren this->s_Dateiname = s_Dateiname; dirty = false; // miDatei_Speichern_unter->Enabled = false; return true; // } } catch (IOException^) { MessageBox::Show("Datei konnte nicht gespeichert werden.", "Fehler"); } return false; }
Was ich eigentlich umsetzen möchte ist folgendes:
Ich hab ein Fenster in dem sich Texte und dazu gehörige Eingabefelder befinden. Nun möchte Ich diese Texte mit den ausgeüfllten Eingabefelder in eine Datei speichern. In dieser Datei soll ungefähr so aussehen am einfachen Beispiel:
Leiblingsessen:→Pizza
Alter: →10→ JahreIrgendwie stehe ich dabei auf dem Schlauch.
-
Du sollst auch mein Beispiel *genau* so umsetzen... also mach eine *eigen* Klasse für die Daten!!! Speichere *nicht* das Form, sondern kopiere die Daten in die "Speicherklasse" und speichere diese!