1

特定の再現が難しい条件下で、値が追加されると次の例外がスローされるバインディングリストがあります。

System.ArgumentException: Complex DataBinding は、データ ソースとして IList または IListSource を受け入れます。System.ComponentModel.ReflectPropertyDescriptor.SetValue (オブジェクト コンポーネント、オブジェクト値)
で System.Windows.Forms.Binding.SetPropValue (オブジェクト値)
で System.Windows.Forms.Binding.PushData (ブール値の力)
で System.Windows.Forms.
System.Windows.Forms.CurrencyManager.CurrencyManager_PushData()
の System.Windows.Forms.BindingManagerBase.PushData () のBindingManagerBase.PushData(Boolean& success)
System.Windows.Forms.CurrencyManager.OnItemChanged(ItemChangedEventArgs e)
の System.Windows. Forms.CurrencyManager.List_ListChanged(オブジェクト送信者, ListChangedEventArgs e)
System.ComponentModel.ListChangedEventHandler.Invoke(オブジェクト送信者、ListChangedEventArgs e)
で System.ComponentModel.BindingList 1.InsertItem (Int32 インデックス、T アイテム) で System.Collections.ObjectModel.Collection`1.Add(T アイテム) ...1.OnListChanged(ListChangedEventArgs e)
at System.ComponentModel.BindingList


リストを作成するとき、またはプロパティの1つを変更するときに発生したかどうかは理解できましたが、これは特定の値を追加するときにのみ発生します. 次のように宣言されています。

private BindingList<IBusinessObject> _bindingList = new BindingList<IBusinessObject>();

そして、後で次のように使用します(例外がスローされる場所です):

_bindingList.Add(myBusinessObject);

さらに悪いことに、これは、ここに含まれるコードが最近編集されていない、以前は機能していた製品コードで発生しています。これはある種の微妙なデータ相互作用の問題であり、それがまれに発生する理由でもあるのではないかと疑っていますが、率直に言って、例外の起点が.Net内部の奥深くにあるため、途方に暮れています。

アップデート: 実際には単一のフォームではなく、複数のフォーム/ダイアログをサポートするために使用されるオブジェクト モデルの一部です。これは非常に複雑なコードであり、私が書いたコードではなく、単に維持/拡張しているにすぎません。コードを掘り下げた後、BindingList がさらにいくつかのドメイン オブジェクトに追加され、最終的にはオブジェクトの文字列プロパティを使用して ImageListBox を設定するために使用されるように見えます。問題の文字列は決して null または空白であってはなりませんが、コードが配置されている場所と、デバッガーを接続して検証するエラーを再現するのが難しいため、問題が発生します。null 値が原因で、問題が実際にある場所から遠く離れた場所で BindingList が例外をスローする可能性はありますか? このオブジェクトは、問題の ImageListBox リストへのデータ ソースとして最終的に割り当てられる前に、文字通り 3 つまたは 4 つの他のオブジェクト/コレクションに挿入されます (それでも、最終的に BindingList オブジェクトのどれが正確であるかについては、他のいくつかの選択に依存します)。リストの入力に使用されます)。

4

1 に答える 1

1

IBusinessObjectのプロパティにバインドされたある種のリストコントロールのDataSourceプロパティがあり、そのプロパティがDataSourceとして無効な値を返しているようです。このフォームで使用しているすべてのバインディングについて、より具体的に教えてください。

于 2009-05-21T18:30:22.647 に答える