2009-05-21 1 views
1

を追加するときに、なぜするBindingListは、私は値がそれに追加されたときの状態を再現するのは難しい、特定の下で、次の例外がスローされていることを、バインディングリストを持っているSystem.ArgumentExceptionのを投げるん:メンバー

システム.ArgumentException:Complex DataBindingは、IListまたはIListSourceのいずれかをデータソースとして受け取ります。 System.Windows.Forms.Binding.PushData(ブール力)でSystem.ComponentModel.ReflectPropertyDescriptor.SetValueで (オブジェクト・コンポーネント、オブジェクト値)
System.Windows.Forms.Binding.SetPropValueで(Object値)

System.WindowsでSystem.Windows.Forms.BindingManagerBase.PushData(ブール&成功)でSystem.Windows.Forms.BindingManagerBase.PushDataで
System.Windows.Forms.CurrencyManager.CurrencyManager_PushDataで()
()
。 Forms.CurrencyManager.OnItemChanged(ItemChangedEventArgs e)
at System.Windows.Forms.CuシステムでSystem.ComponentModel.BindingList 1.OnListChanged(ListChangedEventArgs e)
at System.ComponentModel.BindingList
1.InsertItem(のInt32インデックス、T項目)でrrencyManager.List_ListChanged(オブジェクト送信者、ListChangedEventArgs E)
System.ComponentModel.ListChangedEventHandler.Invoke(オブジェクト送信者、ListChangedEventArgs e)に

.Collections.ObjectModel.Collection`1.Add(Tアイテム)
...

リストを作成する、またはプロパティのいずれかを変更するとき、それが起こっていた場合、私は理解できますが、場合にのみ起こっています特定の値を追加します。

ので(例外がスローされている場所である)のように、後に使用
private BindingList<IBusinessObject> _bindingList = new BindingList<IBusinessObject>(); 

そしてを::

_bindingList.Add(myBusinessObject); 

これはどこなし以前働いて生産コードで発生しているさらに悪いことに、次のように宣言ですここに含まれるコードは最近編集されています。私は疑問を持っています。これは微妙なデータのやりとりの問題であり、まれにしか起こらない理由ですが、正直に言うと、例外の起点は.Net内部の深い部分です。

更新: これは実際には単一のフォームではなく、複数のフォーム/ダイアログをバックアップするために使用されるオブジェクトモデルの一部です。それは非常に複雑なコードであり、私が書いたコードではなく、単に維持/強化しているコードではありません。コードを掘り下げた後、BindingListがいくつかのドメインオブジェクトに追加され、最終的にオブジェクトの文字列プロパティを使用してImageListBoxを生成するのに使用されるように見えます。問題の文字列はヌルまたは空白であってはいけませんが、コードがどこにあり、エラーを再現するのが難しいかによって、デバッガを接続して確認することは問題になります。 null値を指定すると、BindingListは、問題が実際にどこにあるかなど離れた場所で例外をスローすることができますか?このオブジェクトは、問題のImageListBoxリストのデータソースとして最終的に割り当てられる前に、文字通り3つまたは4つの他のオブジェクト/コレクションに挿入されます(そして、BindingListオブジェクトのうちのどれが最終的にリストを作成するために使用されます)。

答えて

1

リストコントロールのDataSourceプロパティがIBusinessObjectのプロパティにバインドされていて、そのプロパティがDataSourceとして有効でない値を返すようです。このフォームで使用しているすべてのバインディングについて、より具体的に説明できますか?