C#: Problem mit OpenFileDialog bei XML-Schreiben

knoess

Cadet 1st Year
Registriert
Mai 2005
Beiträge
15
Hallo zusammen

Ich habe folgendes Problem in einem C#-Projekt:

Ich habe einige Felder, welche alle in ein XML-File geschrieben werden sollen (zuerst in ein Dataset und danach in XML). Das funktioniert soweit ganz gut. Wenn ich jetzt aber irgendwo einen openFileDialog einbaue und den Filenamen, welcher ausgewählt wird, dann auch ins Dataset und dann ins XML schreiben will, geht gar nichts mehr. Es wird überhaupt kein File mehr geschrieben und Fehlermeldung kommt auch keine!!!

Kann mir jemand sagen wie ich dies lösen kann?

Vielen Dank für die Hilfe, Knoess
 
Poste mal den Codeausschnitt, wo du den Dialog anzeigst und dann das XML-File schreibst.
Bei mir hat's nämlich immer funktioniert, also mus in deinem Code der Fehler liegen...
 
OK, hier der Code für den Dialog:

private void btnsearch_Click(object sender, System.EventArgs e)
{

openFile.ShowDialog();
Path = openFile.FileName;
txtPath.Text = Path;

}

private void btnaddpicture_Click(object sender, System.EventArgs e)
{

Discription = txtDiscribtion.Text;
if(Path!=null && Discription!=null)
{
checksum="OK";
}
this.Close();

}

Und hier der Code für das Schreiben vom XML-File:


private void btnSpeichern_Click(object sender, System.EventArgs e)
{
string ContactNr = "Contact_" + test.Tables.Count;
DataTable tblContact = test.Tables.Add(ContactNr);
DataColumn TelNrPrivat = tblContact.Columns.Add("TelNrPrivat");

DataColumn TelNrGeschaeft = tblContact.Columns.Add("TelNrGeschaeft");
DataColumn TelNrMobile = tblContact.Columns.Add("TelNrMobile");
DataColumn Mail = tblContact.Columns.Add("Mail");
DataColumn Name = tblContact.Columns.Add("Name");
DataColumn Vorname = tblContact.Columns.Add("Vorname");
DataColumn Fax = tblContact.Columns.Add("Fax");
DataColumn Strasse = tblContact.Columns.Add("Strasse");
DataColumn PLZ = tblContact.Columns.Add("PLZ");
DataColumn Ort = tblContact.Columns.Add("Ort");
DataColumn Geburtsdatum = tblContact.Columns.Add("Geburtsdatum");
DataColumn ErinnerungGebDatum = tblContact.Columns.Add("ErinnerungGebDatum");
DataColumn Spitzname = tblContact.Columns.Add("Spitzname");
DataColumn Website = tblContact.Columns.Add("Website");
DataColumn Zusatzinfo = tblContact.Columns.Add("Zusatzinfo");
DataColumn Beruf = tblContact.Columns.Add("Beruf");
DataColumn Abteilung = tblContact.Columns.Add("Abteilung");
DataColumn Arbeitgeber = tblContact.Columns.Add("Arbeitgeber");
DataColumn Büro = tblContact.Columns.Add("Büro");
DataColumn Vorgesetzter = tblContact.Columns.Add("Vorgesetzter");
DataColumn PathBild01 = tblContact.Columns.Add("PathBild01");
DataColumn PathBild02 = tblContact.Columns.Add("PathBild02");
DataColumn PathBild03 = tblContact.Columns.Add("PathBild03");
DataColumn PathBild04 = tblContact.Columns.Add("PathBild04");
DataColumn PathBild05 = tblContact.Columns.Add("PathBild05");
DataColumn DiscriptionBild01 = tblContact.Columns.Add("DiscriptionBild01");
DataColumn DiscriptionBild02 = tblContact.Columns.Add("DiscriptionBild02");
DataColumn DiscriptionBild03 = tblContact.Columns.Add("DiscriptionBild03");
DataColumn DiscriptionBild04 = tblContact.Columns.Add("DiscriptionBild04");
DataColumn DiscriptionBild05 = tblContact.Columns.Add("DiscriptionBild05");
DataColumn Assistent = tblContact.Columns.Add("Assistent");
DataRow Contact = tblContact.NewRow();
Contact[TelNrPrivat] = txtTelNrPrivat.Text;
Contact[TelNrGeschaeft] = txtTelNrGeschaeft.Text;
Contact[TelNrMobile] = txtMobilNr.Text;
Contact[Mail] = txtMail.Text;
Contact[Name] = txtName.Text;
Contact[Vorname] = txtVorname.Text;
Contact[Fax] = txtFax.Text;
Contact[Strasse] = txtStrasse.Text;
Contact[PLZ] = txtPlz.Text;
Contact[Ort] = txtOrt.Text;
Contact[Geburtsdatum] = txtGeburtstag.Text;
Contact[ErinnerungGebDatum] = chkErinnerungGeb.Checked;
Contact[Spitzname] = txtSpitzname.Text;
Contact[Website] = txtWebsite.Text;
Contact[Zusatzinfo] = txtZustzinfo.Text;
Contact[Beruf] = txtBeruf.Text;
Contact[Abteilung] = txtAbteilung.Text;
Contact[Arbeitgeber] = txtArbeitsgeber.Text;
Contact[Büro] = txtBuero.Text;
Contact[Vorgesetzter] = txtVorgesetzter.Text;
Contact[Assistent] = txtAssistent.Text;
if(Adr.i!=0)
{
Contact[PathBild01] = Adr.Paths[0];
Contact[DiscriptionBild01] = Adr.Discriptions[0];
Contact[PathBild02] = Adr.Paths[1];
Contact[DiscriptionBild02] = Adr.Discriptions[1];
Contact[PathBild03] = Adr.Paths[2];
Contact[DiscriptionBild03] = Adr.Discriptions[2];
Contact[PathBild04] = Adr.Paths[3];
Contact[DiscriptionBild04] = Adr.Discriptions[3];
Contact[PathBild05] = Adr.Paths[4];
Contact[DiscriptionBild05] = Adr.Discriptions[4];
}
tblContact.Rows.Add(Contact);
test.WriteXml("Contacts.xml");
this.Close();
}

Wenn ich das ganze so Compiliere, dann wird kein XML-File geschrieben. Sobald ich aber die Zeile "openFile.ShowDialog();" entferne und nochmal compiliere, klappt es. Ist aber natürlich unsinnig, da ich ja so kein Bild öffnen kann und ins XML schreiben kann.
Nützt dir das was? Danke für deine Hilfe!
 
Mir fehlt jetzt hier irgendwie ein zusammenhang zwischen btnsearch und btnaddpicture.
Wann wird was aufgerufen?
Und für was ist das Close() in der 2. Fkt.? Ist das ein eigenes Fenster, wo da geschlossen wird?

Erklär mir bitte einwenig die Struktur, oder poste mal das ganze Projekt (als *.zip Anlage versteht sich ;) ).
 
knoess, willst du du der ganze code nicht in methoden umwandeln? so wird es sicherlich viiel übersichtlicher und wir können es auch besser verstehen :) *dasAnzünden:)*
 
Hier mein ganzes Projekt: http://knoess.kn.funpic.de/Memorize.rar

Das XML-File wird in das Verzeichnis Memorize/bin/Debug geschrieben. Es wird jedoch nicht mehr geschrieben, sobald der OpenFileDialog auf dem GUI frmnewPic ausgeführt wird.

Danke für deine Hilfe
 
Ich hab dein Projekt jetzt mehrmals gestartet, immer verschiedenste Teile auskommentiert, mindestens ne halbe Stunde den Code durchwühlt, aber ich bin immer noch ratlos, warum das jetzt nicht funktioniert.

Hast mein Beileid. ^^


EDIT:
Ich möchte aber nochmal erwähnen, dass dein "XML-Stil" sehr, sehr schlecht ist.
Für jeden weiteren Eintrag "erfindest" du ein neues Element "contact_X".
Wenn du überhaupt ne Nummer da drin haben willst, dann füg die per Attribut oder einem weiteren KindElement ein.
 
Zuletzt bearbeitet:
Also ich habs mir auch kurz geladen und gestartet. Bin mit dem Debugger kurz durch, aber tiefer konnte ich in den Code aus zeitgründen nicht gehen. Vielleicht über Mittag nochmals schnell...
 

Ähnliche Themen

Zurück
Oben