2011-10-25 19 views
2

IBindingListデータソースからのデータを表示するプログラム(単純なグリッド - 特殊な出力付き)を作成しようとしています。私はデータをうまく表示することができますが、私はまた、グリッドとは別のTextBoxのように、ユーザーがデータを編集できるようにしたいと考えています。私の問題は、2つの要素(グリッドと編集可能なテキストボックス)の間でデータの「自動」更新を実行する方法が不明であることです。IBindingList変更通知

リストのListChangedイベントは、リスト自体が変更されたときに通知しますが、リストの実際のデータがいつ変更されたかを知るためにはグリッドが必要です。グリッド外の変更が発生したときに、私がBindingManagerBase.Bindings [0] .Parseイベントにフックすることを教えてくれたのは、私が偶然見つけた唯一の事です。ユーザーがこれを行うわけではありませんが、ユーザーがすべて同じフィールドにバインドされた複数のテキストボックスを設定している場合は、各BindingManagerBase.Bindingエントリをループしてフックする必要がありますか?

私はこれを正しくやっていないと推測しており、これを達成するためのより一般的な方法があります。私は達成しようとしていることにもっと精通している方から、ある程度の方向性を高く評価します。事前に

おかげで、 -Matt

答えて

1

INotifyPropertyChangedのを見てください。 BindingListに格納されているクラスに実装して、項目のプロパティが変更されたときにBindingListに通知します。

IBindingListを自分で実装している場合は、リスト内の各アイテムのイベントに接続するためにもう少し作業が必要ですが、提供されたBindingListはこれらのイベントを自動的に取得します。

+0

感謝を使って編集を通知することもできます!私はすでにそれを試して、それはうまく動作します。しかし、私が混乱しているのは、クラスにINotifyPropertyChangedを実装したクラスがなくても、他のアプリケーション(MS DataGridView、etalなど)が正しく動作することです。彼らがどのようにこれを達成するか考えているでしょうか? – user1012900

+0

DGVはバインディングソースから出てくるすべての行/セルの値を取得して設定しているだけです。 – user1012900

関連する問題