probleme mit ToString() + listbox


nostar

Grünschnabel
hi zusammen,

ich habe eine listbox, in der die ergebnisse einer abfrage aufgelistet werden sollen und habe zu diesem zweck alle ergebnisse aus einem ArrayList mittels Items.Add(result[i]) in die listbox eingefügt. Soweit so gut. Mein problem ist jetzt, dass ich die ToString()-methode überschreiben wollte, um mein Ergebnis ansprechend zu formatieren:

Code:
public override string ToString()  		
{
return string.Format( "{0} {1}, {2}", this.Personalnummer, this.Nachname, this.Vorname);
}
Als Ergebnis erhalte ich, egal mit welcher Methode ich herumprobiere (Concat, + etc.), immer nur die Personalnummer und den Nachnamen. Am String selbst liegt es nicht (ich habe schon versucht die beiden Strings zu vertauschen, aber gleiches Ergebnis in grün). DataSource und DisplayMembers kann ich leider nicht verwenden, da auch andere Objekte in die ListBox übernommen werden - ich bin ratos, wie ich trotzdem zum Ziel komme. Ich hoffe mir kann irgendjemand weiterhelfen, ich bin schon am verzweifeln.

Danke schon mal im Vorraus
nostar
 

broetchen

Erfahrenes Mitglied
Ich versteh zwar nicht, warum es nicht geht, aber versuch's mal so:

Code:
public override string ToString()
{
   return this.Personalnummer + " " + this.Nachname + ", " + this.Vorname;
}
Vielleicht klappt's ja.

mfg broetchen
 

Christian Kusmanow

Erfahrenes Mitglied
Hi nostar,
hallo broetchen! :)

nostar, das sieht für mich nach einem fehlenden Wert aus.
Setz doch mal einen BreakPoint an der Stelle und untersuch mal den Inhalt der Strings. ;)

MfG, cosmo
 

nostar

Grünschnabel
hi zusammen,

Keine chance: Concat hilft nicht, Verkettungsoperator hilft nicht und selbst mit StringBuilder komm ich nicht weiter.

Den Inhalt habe ich schon gecheckt, wenn ich Nachname und Vorname vertausche habe ich statt dem Nachnamen nur noch den Vornamen. Selbst wenn ich hardcoded einen String verwende passiert nichts. Spannend oder?

Vielleicht kann jemand das Problem nachvollziehen:

Code:
this.ergebnisseLBX = new ListBox();
.
.
.
//suchParameter: Mitarbeiterobjekt mit den Sucheinschränkungen
//return: ArrayList mit Mitarbeiter-Objekten
ArrayList resultat = MitarbeiterQueries.Select(suchParameter);

for(int i = 0; i < resultat.Count; i++)
{
	this.ergebnisseLBX.Items.Add(resultat[i]);
}

//für die Anzeige wird die ToString()-Methode des Mitarbeiters aufgerufen
Kann mir trotzdem jemand weiterhelfen?

schöne Grüße
nostar
 

nostar

Grünschnabel
hi zusammen,

so einfach kann die Lösung sein:


public override string ToString()
{
return string.Format( "{0} {1}, {2}", this.Personalnummer, this.Nachname.Trim(), this.Vorname.Trim());
}

trotzdem danke für eure Bemühungen
nostar
 

broetchen

Erfahrenes Mitglied
Hä?

Das weglassen vom Trimmen entfernt einen String?
Oder ist er dann für die ListBox einfach zu lang?

mfg broetchen
 

nostar

Grünschnabel
Hi,

liegt daran, dass jemand anderer die Datensätze hardcoded zu Testzwecken in die DB eingegeben hat. Der SQL-Server hat standardmäßig alles mit Blanks befüllt und natürlich den gesamten String (60 Zeichen) zurückgegeben. Spannend ist für mich nur mehr, dass AutoScrolls der ListBox nicht angezeigt wurde, aber was solls.

Den Trim hab ich natürlich jetzt schon vor Zuweisung ans Mitarbeiter-Objekt implementiert. :)

Und wieder mal hat sich für mich bestätigt: Die einfachsten und dümmsten Fehler, sind oftmals die Schlimmsten.

Aber trotzdem noch mal danke für die Mithilfe!
nostar