2009-08-05 2 views
1

Ich habe eine 3 ComboBoxes in einem Formular, eine Liste von Objekten. Ich muss die Comboboxen mit 3 verschiedenen Mitgliedern der Klasse aus der Liste binden. (C# 3.0, .NET 3.5) ich derzeit tue diesMehrere Comboboxen mit einer Liste von Objekten

Title_Combo.DataSource = ListContaining.GroupBy(item => item.Title).Where(item => !item.Key.Equals(string.Empty)).ToList(); 

Title_Combo.DisplayMember = "Key"; 

Wo ListContaining eine Teilmenge der Hauptliste der objects.Every Zeit ist ein Element in einem diesen Combobox ausgewählt ist der ListContaining besiedelt basierend auf ausgewählten Wert aus der Hauptliste von Objekten wie und alle Comboboxen werden neu geladen.

ListContaining = ListFiles.Where(item => item.GetType().GetProperty(name).GetValue(item, null).Equals(int.Parse(Sender.SelectedItem.ToString()))).ToList(); 

Es lädt sich aber die nächste Auswahl der Comboboxen wirft eine Nullreference Ausnahme.

Ist dies aufgrund der Tatsache, dass die List ListContaining umgeschrieben wird oder etwas, kann ich herausfinden.

und gibt es einen besseren Weg, um die 3 Comboboxen aus der Liste zu behandeln.

Ihre Hilfe wird geschätzt.

EDITED: Ich habe das Debuggen aufgegeben. Aber kann jemand einen Weg vorschlagen, 3 Comboboxen mit einer einzigen Liste von Objekten mit 3 verschiedenen Eigenschaften zu binden. Und die Steuerelemente werden bei Indexänderungen aktualisiert.

Antwort

0

Nun, ich habe die Antwort bekommen.
Sie können eine Teilmenge von Objekten verwenden, um ein Steuerelement zu binden, das nicht die Ursache des Problems war.
Und ich bin in der Lage, mehrere Comboboxen in der beschriebenen Weise zu behandeln.

1

Dieses Problem kann auftreten, wenn der Listentyp Ihrer zweiten Combobox DropDown nicht DropDownList ist, normalerweise derselbe Fehler in der von Ihnen erwähnten Ausnahme. Bitte überprüfen Sie Ihre Steuerelemente.

Für einen zweiten Gedanken, wenn Ihr Comboboxen einander verwandt sind, wie folgt:

Eine zu viele Beziehung

  • ComboBox: CompanyGroup
  • ComboBox: Firma
  • ComboBox: Person

-> Wenn ein Cha nges von oben, unten wird ausgelöst. Sie Fall ist wie:

viele zu viele Beziehung

  • ComboBox: Tags
  • ComboBox: Fragen

-> Falls die Frage ändert er seine eigene Tags auslöst und If Tags ändert es nur für das Tag, das die Frage hat.

Nur zu diesem Zweck sollten Sie jedes Mal, wenn sich Ihr Combobox-Element ändert, in der gesamten Sammlung suchen. Denn wie ich aus Ihrer Frage verstehe, löst eine Auswahl eine andere Auswahl aus.

+0

Ja meine ist Drop-Down-Stil, und es verursacht nicht das Problem, wie der ausgewählte Wert für Null-Werte überprüft wird. Ja, meins ist viele zu viele Beziehung und daher gruppiere ich und suche die Liste. Ich bin besorgt, dass die Liste jedes Mal ändert, wenn ich so wähle, verursacht das das Problem. – lune

1

Warum verwenden Sie keine zusätzlichen Listen, die die Werte von Comboboxen speichern?

So haben Sie für jede Combobox eine Liste von Zeichenfolgen.Sie können auch alle diese verschiedenen Listen von Strings in einer anderen Struktur wie dem Dictionary speichern.

Möglicherweise werden dadurch mehr Codezeilen und zusätzliche Speicher verwendet, aber dafür erhalten Sie einen leichter zu verwaltenden Code.

+0

Ja, das kann aber gemacht werden, aber die Werte können editiert werden und somit müsste man mit anderen Listen synchronisieren. Dies wäre die Lösung, wenn es keine bessere Lösung gibt. Ich bin nicht sicher, ob dies mit einem Wörterbuch getan werden kann. – lune

+0

Einverstanden. Deshalb habe ich zusätzliche Codezeilen gesagt. Jedenfalls hatte ich ein ähnliches Problem und das war meine Lösung. Eher weniger effizient wie es ist, aber die Liste der Strings bietet mir auch einige zusätzliche Funktionen. Auch persönlich bevorzuge ich mehrere kleinere Codezeilen anstelle von intelligent geschriebenen aber eine sehr lange 1 Zeile Code. – someone