0

私は Winforms アプリケーションに取り組んでおり、リストボックスにバインドしたいオブジェクトのバインディングリストがあります。これでうまくいきましたが、次にやりたいことは、特定のプロパティが true である項目のみを表示することです。

だから私はバインディングリストを持つクラスを持っています

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

私はウェブを見回してきましたが、私がやろうとしていることに似ていると思われるものは何も見つかりませんでした. 提案や代替方法は大歓迎です. ありがとう

4

1 に答える 1

0

これを試してください: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に設定する代わりに、関数の結果と等しくなるように設定します。DataSourceallTableSetssomeTableSets()

    this.populatedTableSetsListBox.DataSource = dataBuilder.someTableSets();
于 2013-02-11T21:11:18.103 に答える