Seltsames problem mit ListBox.DataSource

Ich Schreibe eine Windows-Anwendung und mit einem Listbox-Steuerelement. Ich entwickle mit Visual Studio C# 2008 Express Edition.

Habe ich ein Daten-Objekt, das so ähnlich aussieht, wie diese

public class RootObject
{
   public List<SubObject> MySubObjects{ get; set;}
}

Ich habe eine ListBox auf meiner form, und auch eine Eigenschaft "MyRootObject", die es, offenbar ist, hält RootObject. Wenn die Steuerung initialisiert wird, habe ich:

_listBox.DataSource = MyRootObject.MySubObjects;

Nun, wenn das Formular geladen wird, ich Debuggen und zu sehen, dass die DataSource korrekt eingestellt. Aber es wird nichts angezeigt. Ich habe überschrieben Unterobjekt ToString () - Methode und es ist nicht einmal genannt. Ich habe versucht, _listBox.DisplayMember eine Eigenschaft von Teilobjekt nur zu sehen, wenn es irgendein problem gibt, aber immer noch nichts. Ich habe versucht, den Aufruf _listBox.Update() und _listBox.Refresh() nach Festlegung der DataSource, aber noch keine Liebe. Die DataSource hat alle Daten... es ist nur die Verweigerung, um es anzuzeigen.

Also beim Debuggen, habe ich mich gefragt WTF und ich beschlossen, nur das zu tun,

_listBox.DataSource = new List<SubObject>{ new SubObject(), new SubObject() };

Sicher genug, das hat funktioniert, und ich sehe zwei Dinge aufgelistet die in meiner listbox.

Also dann, wirklich neugierig, ich beschlossen, zu versuchen, kopieren Sie die Liste der Objekte und setzen, dass in der listbox, etwa so:

_listBox.DataSource = MyRootObject.MySubObjects.ToArray();

Dieser funktioniert! Und es ist ein workaround für mein problem jetzt... aber sehr lästig. Weiß jemand, warum brauche ich im Grunde kopieren Sie die Liste der Objekte wie dieses, um es zu arbeiten, anstatt nur die Einstellung der _listBox.DataSource = MyRootObject.MySubObjects; ? Wieder, die DataSource hat für alle die richtigen Daten entweder Weg, nachdem Sie es... es ist nur, wenn es kopiert Daten, es zeigt tatsächlich, und wenn es nicht ist, wird es nicht angezeigt.

InformationsquelleAutor | 2009-03-23
Schreibe einen Kommentar