質問

を実装する汎用コレクション クラスの適切な実装を誰かが提案できますか? IBindingListView & IBindingList インターフェイスを提供し、フィルタリングと検索機能を提供しますか?

現在のオプションは次のようになります。

  • 他の人が作成してテストしたクラスを使用する
  • 継承元 BindingList<T>, を実装し、 IBindingListView インターフェース
  • カスタム コレクションを最初から作成して実装する IBindingListView そして IBindingList.

明らかに、最初のオプションが私の好みです。

役に立ちましたか?

解決

私は数年前に MSDN フォーラムの古い投稿で見つけた実装を使用し、その上に構築しましたが、最近再度検索して、という SourceForge プロジェクトを見つけました。 バインディングリストビュー. 。かなり良さそうですが、ハッキングしたバージョンと置き換えるためにまだ導入していないだけです。

ナゲット パッケージ: Equin.ApplicationFramework.BindingListView

コード例:

var lst = new List<DemoClass>
{
    new DemoClass { Prop1 = "a", Prop2 = "b", Prop3 = "c" },
    new DemoClass { Prop1 = "a", Prop2 = "e", Prop3 = "f" },
    new DemoClass { Prop1 = "b", Prop2 = "h", Prop3 = "i" },
    new DemoClass { Prop1 = "b", Prop2 = "k", Prop3 = "l" }
};
dataGridView1.DataSource = new BindingListView<DemoClass>(lst);
// you can now sort by clicking the column headings 
//
// to filter the view...
var view = (BindingListView<DemoClass>)dataGridView1.DataSource;            
view.ApplyFilter(dc => dc.Prop1 == "a");

他のヒント

舞台裏のメソッド2と3のヘルプは次のとおりです。Windows フォーム データ バインディングのフィルタリングの実装

http://www.microsoft.com/downloads/details.aspx?FamilyID=4af0c96d-61d5-4645-8961-b423318541b4&displaylang=en

私が考えることができる解決策は次のとおりです。

  1. サブソニックプロジェクト かなり優れた実装があります BindlingList<T> それはオープンソースです。ただし、その実装を使用するには、SubSonic バイナリ全体を使用する必要がある場合があります。

  2. のクラスを使って楽しんでいます パワーコレクション プロジェクト。そこにある基本コレクションの 1 つから継承して実装するのは非常に簡単です。 IBindingListView.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top