質問
を実装する汎用コレクション クラスの適切な実装を誰かが提案できますか? 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 フォーム データ バインディングのフィルタリングの実装
私が考えることができる解決策は次のとおりです。
の サブソニックプロジェクト かなり優れた実装があります
BindlingList<T>
それはオープンソースです。ただし、その実装を使用するには、SubSonic バイナリ全体を使用する必要がある場合があります。のクラスを使って楽しんでいます パワーコレクション プロジェクト。そこにある基本コレクションの 1 つから継承して実装するのは非常に簡単です。
IBindingListView
.
所属していません StackOverflow