コレクションでアイテムがいつ追加/削除/変更されるかを知る必要がある状況があります。
これらのイベントをトリガーするクラスでBindingListを継承してみましたが、「adding」イベントが機能しません。私がそれが機能していることを発見した唯一の方法は、EndNew()メソッドをオーバーライドすることですが、このメソッドに追加されるオブジェクトを取得する方法が見つかりません(誰かがこれに対する解決策を持っているなら、それも大丈夫です!)。
そのため、BindingListの同じインターフェイス/クラスから継承するまったく新しいクラスを構築し、すべてを実装しました(ただし、ICancelAddNewは継承しませんでした)。
データバインディングを介してリストボックスにバインドしましたが、何も機能しないことがわかりました(listchangedイベントもlistchangingイベントも)。リストボックスでBindingListの動作をシミュレートするにはどうすればよいですか?
どんな提案も大歓迎です、私は回避策のための他のアイデアを持っていません
編集1:
これは私のコレクションです:http://pastie.org/1978601 そしてこれは私がコレクションをリストボックスにバインドする方法です
SpellCasterManager.CurrentProfile.ButtonsMacro.ListChanged += new ListChangedEventHandler(ButtonsMacro_ListChanged);
SpellCasterManager.CurrentProfile.ButtonsMacro.ListChanging += new Expand.ComponentModel.ListChangingEventHandler(ButtonsMacro_ListChanging);
gumpButton.DataBindings.Add("Value", SpellCasterManager.CurrentProfile.ButtonsMacro, "GumpIndex", false, DataSourceUpdateMode.OnPropertyChanged);
実際には、サブスクライブされたイベントの下には、MessageBox.Show( "bla");だけがあります。