簡體   English   中英

將列表框綁定到綁定列表,對項目屬性進行過濾

[英]Binding Listbox to bindinglist, filter on item property

我正在使用Winforms應用程序,並且有一個要綁定到列表框的對象的綁定列表。 我可以使用它,但是接下來要做的是僅顯示具有特定屬性的項目。

所以我有一個帶有綁定列表的類

class DataBuilder
{    
    public BindingList<TableSet> allTableSets = new BindingList<TableSet>();
}

還有一個帶有一些屬性的TableSet

class TableSet
{
    public string TableSetName {get; set;}
    public bool IsPopulated {get; set;}
}

現在在我的表單上,我想將一個列表框綁定到allTableSets,但只顯示IsPopulated == true的項目

到目前為止,我的表單上只顯示了allTableSets列表中的所有項目

public partial class MainForm : Form
{
    DataBuilder dataBuilder = new DataBuilder();
    {
        this.populatedTableSetsListBox.DataSource = dataBuilder.allTableSets;
        this.populatedTableSetsListBox.DisplayMember = "TableSetName";
    }
}

我一直在網上瀏覽,但沒有找到任何與我嘗試做的事情相似的事情。任何建議或替代方法都將不勝感激。謝謝

嘗試以下操作:在DataBuilder類中,有一個函數可以根據您的過濾條件返回項的子集。

例如,在您的DataBuilder類中:

    public BindingList<TableSet> someTableSets()
    {
        BindingList<TableSet> someTableList = new BindingList<TableSet>();
        foreach (TableSet TS in allTableSets)
            if (TS.IsPopulated == true)
                someTableList.Add(TS);
        return someTableList;
    }

然后,在MainForm ,而不是將DataSource設置為allTableSets ,將其設置為與someTableSets()函數的結果相等:

    this.populatedTableSetsListBox.DataSource = dataBuilder.someTableSets();

暫無
暫無

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

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