Ich habe drei ComboBoxes in einem WinForm. Um diese Combos mit Daten zu laden, habe ich drei Methoden erstellt. Zwei dieser Verfahren sieht wie folgt aus:Bind List zu ComboBox in C#
private void cmbLoadSubjects(List<Subject> subjects)
{
BindingSource source = new BindingSource();
source.DataSource = subjects;
cmbSubjects.DataSource = source;
cmbSubjects.DisplayMember = "name";
cmbSubjects.ValueMember = "id";
}
private void cmbLoadTeachers(List<Teacher> teachers)
{
BindingSource source = new BindingSource();
source.DataSource = teachers;
cmbTeachers.DataSource = source;
cmbTeachers.DisplayMember = "name";
cmbTeachers.ValueMember = "id";
}
Die Idee ist, den Namen der Person angezeigt werden und den Namen des Lehrers in den Combos.
Angesichts der Tatsache, dass diese Methoden sehr ähnlich sind, habe ich versucht, eine generische Methode zu erstellen, die alle Combos laden können. So kam ich mit auf den Punkt:
private void cargarCombo<T>(ComboBox combo, List<T> data, string displayMember, string valueMember)
{
BindingSource source = new BindingSource();
source.DataSource = data;
combo.DataSource = source.DataSource;
cmbEstadoAsistencia.DisplayMember = displayMember;
cmbEstadoAsistencia.ValueMember = valueMember;
}
Wenn ich diese Methode verwenden, um meine Combos zu laden, ist es nur gut arbeitet in einer der Combos. In den anderen Combos wird der typische "WorkspaceName.ClassName" angezeigt.
Ich versuchte Lehrer Laden und dann versucht Laden Themen in der nur Combo, die gut funktioniert und es zeigte sich, was es angeblich zeigen:
Aber wenn ich versuche, das laden Andere Combos mit dieser generischen Methode, trotz der Klasse der Objekte, bekomme ich "Workspace.Teacher", "Workspace.Subject".
Ich verglich die Werte der Eigenschaften der drei Combos, die versuchen, etwas anderes zu finden, um herauszufinden, was dieses Verhalten verursachen könnte, und sie unterscheiden sich nur in ihrem Namen und ihrer Position.
Ich habe versucht, eine neue Combo und Ladelisten verschiedener Klassen von Objekten zu erstellen, aber die Probleme sind immer noch da.
Eine merkwürdige Sache ist, dass alles gut funktioniert, wenn ich die Methoden benutze, die ich Ihnen am Anfang der Frage gezeigt habe. Ich meine, ich könnte einfach diese Methoden anwenden und dieses dumme Problem vergessen, aber ich bin neugierig .. Ich verstehe einfach nicht, warum die generische Methode nur in einer Kombination gut funktioniert.
Vielen Dank für Ihre Antwort. Ich versuchte beide Möglichkeiten vor dem Posten und bekam das gleiche Ergebnis –
Haben Sie dieses generische mit den Daten getestet arbeitet bereits an Combo funktioniert? Versuchte Fach oder Lehrer auf einer Combo funktioniert aber mit generischen? – matiaslauriti
Ja tat ich.Es funktioniert nur gut in einer der drei Combos ... –