Ich hab da mal ein Problem mit dme DataGridview. Und zwar ist es folgendes. Ich programmiere gerade an einem Vokabeltrainer. Um jetzt Vokabeln möglichst einfach eingeben zu können benutze ich eine Form mit einem DataGridView und zwei Spalten (Deutsch und Englisch). Soweit so OK.
Ist nun die Eingabe der Liste von Vokabeln beendet möchte ich auf einen Button drücken der erstmal die ganzen Vokabeln in List<Vokabel> überträgt. Das mache ich weil ich die Classe Vokabel serialisiert habe um diese in meinem eigenen Format abspeichern zu können.
Allerdings reagiert DataGridView absolut unverständlich in meinen Augen.
Folgender Code funktioniert bisher wenigstens einigermaßen, führt aber trotzdem zu abstürzen.
private Vokabel vok = new Vokabel(); private List<Vokabel> Vokabeln = new List<Vokabel>();
for (int i = 0; i < data_Eingabe.Rows.Count;i++ ) { vok.s_Deutsch = data_Eingabe.Rows[i].Cells["col_Deutsch"].Value.ToString(); vok.s_English = data_Eingabe.Rows[i].Cells["col_English"].Value.ToString(); vok.i_Phase = 1; Vokabeln.Add(vok); }
Die GridView hat wie gesagt zwei Spalten, links Deutsch, rechts Englisch.
Wenn ich jetzt nichts eingebe und Speicher bekomme ich eine System.NullReferenceException in deer Zeile vok.s_Deutsch = data_Eingabe.Rows[i].Cells["col_Deutsch"].Value.ToString();
Gebe ich eine Vokabel ein (Z.B. Du und You) bekomme ich ebenfalls eine System.NullReferenceException, allerdings in der Zeile vok.s_English = data_Eingabe.Rows[i].Cells["col_English"].Value.ToString();... was ich etwas merkwürdig finde weil es ist ja ein Wert vorhanden und der Index sollte auch stimmen.
Gebe ich drei Vokabeln ein (Du, you und in der nächsten Zeile Ich) speichert er die erste Zeile komplett und verursacht wieder eine System.NullReferenceException für die nächste Zeile erste Zelle.
Ich vermute mal das es daran liegen könnte das bereits eine leere Zeile vorgegeben wird sobald man etwas eingibt und dass die Zelle als leer gilt solange man den Cursor noch in dieser hat. Allerdings finde ich dieses Verhalten ein wenig unkompfortabel und seltsam fehlerträchtig.
Gibt es da vielleicht eine bessere Möglichkeit die DataGridView in List zu schieben? Habe mit DataGridView ehrlich gesagt noch nicht viel Erfahrung. Habs halt noch nie gebraucht.