問題タブ [bindinglist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4537 参照

.net - スレッドセーフなBindingListを書いた人はいますか?

現在、複数のスレッドで IBindingList を変更すると例外が発生します。自分で作成する前に、スレッドセーフなバージョンを持っている人はいますか?

0 投票する
6 に答える
28442 参照

.net - DataGridView の並べ替えと BindingList など.NET で

" " 連絡先オブジェクトBindingList<T>のリストを含む Windows フォームでを使用しています。IComparable<Contact>ここで、ユーザーがグリッドに表示されている任意の列で並べ替えできるようにしたいと考えています。

BindingList<T>並べ替えを許可するカスタム コレクションを実装する方法を示す方法が MSDN online で説明されています。しかし、Sort イベントや、カスタム コードを使用して基になるコレクションを並べ替えるために、DataGridView (または、さらに良い場合は BindingSource) でキャッチできるものはありませんか?

MSDN で説明されている方法はあまり好きではありません。もう 1 つの方法では、コレクションに LINQ クエリを簡単に適用できます。

0 投票する
3 に答える
10392 参照

c# - 列挙型を取得する値 説明

これらを含む enumHelper クラスがあります。

私の列挙型は次のようなものです:

ここまでは順調ですね。前の仕事はすべて順調です。ここで、BindingList> を返す新しいヘルパーを追加したいので、次を使用して任意の列挙型を任意のコンボにリンクできます。

そのために私は追加しました:

しかし、「Enum.Description(value)」はコンパイルさえされていません: 引数 '1': 'T' から 'System.Enum' に変換できません

どうやってやるの?それは可能ですか?

ありがとうございました。

0 投票する
1 に答える
2609 参照

c# - DatagridView + カスタム オブジェクト バインディング

次の列を表示する必要がある .NET 3.5 の datagridview があります。

ID、名前、ID2、名前2

この datagridview は次のようにバインドされます。

問題は、ID2 と Name2 が datagridview に値を表示していないことです。設計時に Datagridview に列を作成し、ID2 と Name2 に対応する列にはデータ プロパティを Class2Ref.ID2 と Class2Ref.Name2 として割り当てました。

UI 側では、ID2 と Name2 が Class1 または Class2 のプロパティであるかどうかはユーザーにとって重要ではありませんが、エンティティの設計レベルでは違いがあります。クラスでは直接利用できないが、参照を介して Datagrid で 2 つのプロパティを表示する方法を教えてください。

0 投票する
3 に答える
17355 参照

winforms - ObservableCollection(Of T)とBindingList(Of T)?

私はこの2年間、いくつかのデータベースのWinformsアプリケーションを開発しましたが、すべて正常に動作します。このアプリケーションは、レイヤー(DataAccess、ビジネスロジック、およびUI)上に構築されています。ビジネスロジックの場合、すべてのオブジェクトは、次の定義を持つBaseEntityという基本クラスから継承します(フレームワーク要素と組み合わせたカスタムオブジェクトとインターフェイスがいくつかあります)。

同じコアライブラリに、汎用ベースコレクションBaseEntityCollectionがあります。これらのコレクションを使用すると、オブジェクトごとに、データベースのアプリケーションで非常に興味深い、関連する強い型のコレクションを定義できます。基本的な定義は次のとおりです。

ご覧のとおり、Winformsでデータバインディングを正しく行うために必要なものをすべて使用しています。

  • オブジェクトのINotifyPropertyChanged、INotifyPropertyChanging、IEditableObject。
  • 私のコレクションのBindingList(Of T)に基づくコレクション。

新しいテクノロジにも興味があるので、最近WPFに関するWebキャストをいくつか見ました。これらのWebキャストでは、コレクションおよびデータバインディングサポートObservableCollection(Of T)の基本クラスとして使用されます。

一部のアプリケーションをWinformsからUIレイヤーのWPFに移行することを考えています。

私の質問は、私のビジネスロジックでは、BindingList(Of T)に基づいてコレクションを保持する方がよいのか、それともObservableCollection(Of T)から継承するように基本コレクションクラスを変更する必要があるのか​​ということです。Winformsアプリケーション、WPFアプリケーション、またはASP.NETでも使用できる、すべてのプロジェクトに固有のベースコレクションを保持したいと思います。プロジェクトでLinqtoObjectsも使用しているので、フレームワーク2.0のみに基づいてプロジェクトを維持することで制限はありません。

0 投票する
4 に答える
10231 参照

c# - BindingList や ObservableCollection などのクラスがスレッドセーフでないのはなぜですか?

何度も何度も、BindingList と ObservableCollection のスレッド セーフ バージョンを作成する必要があることに気付きました。UI にバインドすると、これらのコントロールを複数のスレッドから変更できないためです。私が理解しようとしているのは、なぜこれが事実なのかということです-それは設計上の欠陥ですか、それともこの動作は意図的なものですか?

0 投票する
2 に答える
6592 参照

c# - C#でBindingListの項目を並べ替えますか?

C#のBindingListでアイテムを移動するにはどうすればよいですか? たとえば、最後に追加したアイテムを前面に移動するか、前のアイテムと入れ替えますか?

0 投票する
2 に答える
4447 参照

c# - プロパティの変更時に BindingList.ListChanged イベントが発生しない

タイプ User の BindingList があります。User オブジェクトにはいくつかのプロパティ (UserName、Password など) があります。イベント ハンドラーを BindingList.ListChanged イベントに結び付けました。ユーザーを追加または削除するときに問題なく動作しますが、ユーザー プロパティが変更された場合、イベントは発生しません。これを達成する方法はありますか?

0 投票する
1 に答える
749 参照

c# - BindingSource の DataDource は、フォームのプロパティおよびオブジェクトにすることができますか

例: フォームに Contact オブジェクトがあります (以下を参照)。BindingSource のデータソース プロパティを Contact.Addresses プロパティに設定できますか。

クラス AddressCollection は BindingList を実装するため、Contact クラスによってカプセル化されていない場合、これをバインドする問題はありません。

ありがとうアンソニー

0 投票する
1 に答える
1647 参照

c# - メンバーを追加するときに BindingList が System.ArgumentException をスローするのはなぜですか

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

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つを変更するときに発生したかどうかは理解できましたが、これは特定の値を追加するときにのみ発生します. 次のように宣言されています。

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

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

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