簡體   English   中英

在 C# 中將列表綁定到組合框

[英]Bind List to comboBox in C#

我在 WinForm 中有三個組合框。 為了用數據加載這些組合,我創建了三種方法。 其中兩種方法如下所示:

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”。

我比較了三個組合的屬性值,試圖找到不同的東西,以發現可能導致這種行為的原因,它們僅在名稱和位置上有所不同。

我嘗試創建一個新的組合並加載不同類對象的列表,但問題仍然存在。

一件奇怪的事情是,如果我使用我在問題開始時向您展示的方法,這一切都很好。 我的意思是,我可以利用這些方法而忘記這個愚蠢的問題,但我很好奇.. 我只是不明白為什么通用方法只能在一個組合中正常工作。

我發現了問題。 問題是我有時是個白痴:

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;
}

cmbEstadoAsistencia應更改為組合

我正在硬編碼其中一個組合框的名稱。 我很抱歉發布垃圾:(

你的錯誤可能在這里

combo.DataSource = source.DataSource;

將其更改為

combo.DataSource = source;

也許“主題”類需要在其屬性中獲取和設置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM