Autor Beitrag
mo78
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 28.02.12 13:40 
Hallo,
Mein Problem ist folgendes ich habe eine List<string> die als datasource an eine Listbox gebunden ist.
Beim anwählen der Listbox einträge wird über einen event der Ausgewählte eintrag an eine Methode übergeben welche dann anhand des ausgewählten eintrages einen Datensatz aus der DB liest und in entsprechende Texboxen schreibt. Das passiert alles in Form1

Hier mal der Code von Form1
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
public Form1(){
  InitializeComponent();
  db = new DBclass();
  liste = new List<string>();
}

private void dbConnect_Click(object sender, EventArgs e){
  liste = db.getListe();
  listBox1.DataSource = kundenListe;   
}

protected void listBox1_SelectedIndexChanged(object sender, EventArgs e){
  if(listBox1.DataSource!=null)
    updateTextboxes(listBox1.SelectedItem.ToString());
}

private void updateTextboxes(string value){
  listenEintrag = value;
  db.loadDaten(listenEintrag);
  tb1.Text = db.daten[0];
  tb2.Text = db.daten[1];
  tb2.Text = db.daten[2];
}

private void bt_edit_Click(object sender, EventArgs e) {
  form2 = new Form2(this);
  form2.Show();
}

public List<string> Liste {
  get { return liste;}
  set { this.liste = value;}   
}


Und so siehts in Form2 aus
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
private Form1 form1 = null;

public Form2(f1) {
  InitializeComponent();
  db = new DBclass();
  f3Liste = new List<string>();
  this.form1 = f1;
}

private void btSave_Click(object sender, EventArgs e){
  db.edit(tb1.Text, tb2.Text, tb3.Text));
}

private void Form2_FormClosed(object sender, FormClosedEventArgs e) {
  f3Liste = db.getListe();
  this.form1.Liste = f3Liste;            
  this.form1.Refresh();
}


Wenn ich btSave anklicke dann wird der Datensatz auch geändert, nur wenn ich dann Form2 schließe ist in der Listox die Änderung nicht zu sehen, und wenn dann einen eintrag in der list auswähle
bekomme ich auf updateTextboxes(listBox1.SelectedItem.ToString()) eine NullReferenceException.

Naja und da komme ich nun nicht weiter.

Schonmal besten Dank für jegliche Hilfe.

mfg mo

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt


Zuletzt bearbeitet von mo78 am Di 28.02.12 14:06, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 28.02.12 14:06 
Du weißt zwar der Liste Property eine neue List<string> Instanz zu aber wie soll die dann plötzlich in der UI auftauchen? Da du scheinbar Databinding verwendest werden alle entsprechend gebunden Controls weiterhin auf die alte List<string> Instanz schauen. Du mußt die neue List<string> Instanz an deine Controls binden. Am besten im Setter der Liste Property.

Für diesen Beitrag haben gedankt: mo78
mo78 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 28.02.12 14:15 
Ahh besten Dank jetzt funzt es.
Und ist natürlich auch logisch.

mfg
mo