我在WinForm中有三個組合框。要用數據加載這些組合,我創建了三種方法。 兩種這些方法看起來是這樣的:在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";
}
的想法是顯示對象的名稱和連擊老師的名字。
鑑於這些方法都非常相似,我試圖創建一個可加載所有的連擊的通用方法。所以,我想出了這個:
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;
}
如果我用這個方法來加載我的連擊,它只有在連擊的一個正常工作。在其他組合中,它顯示了典型的「WorkspaceName.ClassName」。
我試圖加載老師,然後試圖加載科目在正常工作的唯一組合,它顯示它應該顯示:
但是,當我嘗試加載其他組合使用這種通用方法,儘管類的對象,我得到「Workspace.Teacher」,「Workspace.Subject」。
我比較了三個組合的屬性值,試圖找到不同的東西,以便發現可能導致此行爲的因素,並且它們只在名稱和位置上有所不同。
我試着創建一個新的組合並加載不同類別的對象列表,但問題仍然存在。
一個好奇的是,如果我使用我在問題開始時顯示給你的方法,它一切正常。我的意思是,我可以利用這些方法並忘記這個愚蠢的問題,但我很好奇......我只是不明白爲什麼通用方法只能在一個組合中正常工作。
感謝您的回答。我試過兩種方式,然後發佈,並得到了相同的結果 –
你測試這個通用與數據已經工作組合正在工作嗎?試過的主題或老師在組合上工作但是通用? – matiaslauriti
是的,我做了,它只能在三個組合中的一箇中正常工作... –