問題タブ [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.
bindinglist - BindingList ListChanged イベント
バインディング リストで ListChanged イベントをサブスクライブしています。リストが変更された場合 (アイテムの追加/削除)、内部リストを更新します。内部リストには、元のリストの項目に 1 対 1 で対応するオブジェクトが含まれています。アイテムの順序は異なる場合があります。
ドキュメントに基づいて、イベントが発生したとき、ListChangedEventArgs.ListChangedType は、ItemAdded、ItemDeleted、Reset、および ItemChanged のいずれかになります。ListChangedType は、リスト内の項目が変更された場合 (項目が別の項目に置き換えられた場合、またはそのプロパティの 1 つが変更された場合) に ItemChanged になります。
これらのケースをどのように区別して、リスト内の項目が別の項目に置き換えられた場合に内部リストをリロードできますが、それがプロパティの変更である場合は何もしませんか?
これを達成するためのより良い方法はありますか?
c# - SortableBindingListに安定したソートを使用させる最も簡単な方法
安定ソートを使用するようにSortableBindingListを変更する方法の例があります。ただし、SortableBindingListの更新バージョンがあります。安定ソートを使用するためにこの新しいバージョンを変更する最良の方法は何ですか?SortableBindingListにフラグを設定して、SortableBindingListのユーザーが、(遅い)安定した並べ替えと(速い)デフォルトの並べ替えのどちらを使用するかを決定できるようにしたいと思います。
ありがとう
winforms - コンボボックスへのバインディングリストのデータバインディングとアイテムの削除
Windowsフォームのデータバインディングを使用して、コンボボックスをViewModelクラスに接続しようとしています。
リストからアイテムを削除する場合を除いて、すべて正常に動作します。たとえば、現在選択されているアイテム (コンボボックスで選択されている) を削除すると、コンボボックスの selectedIndexChanged イベントと SelectedValueChanged イベントは発生しません。
c# - 比較可能な画像を作成する方法
私はDataGridView
ジェネリックにバインドされた を持っていBindingList
ます。type の列に並べ替えと検索を適用できるようにしたいDataGridViewImageColumn
。基本的な考え方は、名前を画像に保存し、Tag
並べ替えと検索に使用することです。どうやってやるの?
それを行うにはいくつかの方法があるようです:
- 新しいクラスを継承
System.Drawing.Image
して作成し、それを比較可能にします。Image
は抽象クラスであり、それ (およびIComparable
インターフェイス) から継承すると、次のエラー メッセージが表示されます。型 'System.Drawing.Image' にはコンストラクタが定義されていません。ここで何が問題なのですか?画像はクラスではありabstract
ませsealed
んが、継承できません!
ApplySortCore
から継承されたクラスの保護されたオーバーライド メソッドを使用しますBindingList<T>
。このメソッドは次のようになります。
/li>
DataGridViewColumn
から継承した新しい を作成しDataGridViewImageColumn
ます。- これは簡単ではないようで、他のアイデアが使用できない場合に使用できます。
前もって感謝します
c# - IBindingList変更通知
IBindingListデータソースからのデータを表示するプログラム(単純なグリッド-特殊な出力を使用)を作成しようとしています。データは問題なく表示できますが、グリッドとは別のTextBoxなどで、ユーザーがデータを編集できるようにすることもできます。私の問題は、2つの要素(グリッドと編集可能なテキストボックス)の間でデータの「自動」更新を実行する方法がわからないことです。
リストのListChangedイベントは、リスト自体がいつ変更されたかを教えてくれると思いますが、リスト内の実際のデータがいつ変更されたかをグリッドが知る必要があります。グリッドの外部で変更が発生したときに私が偶然見つけたのは、BindingManagerBase.Bindings[0].Parseイベントにフックすることだけです。ユーザーがこれを行うわけではありませんが、ユーザーがすべて同じフィールドにバインドされた複数のテキストボックスを確立した場合、各BindingManagerBase.Bindingエントリをループしてフックする必要があると思いますか?
私はこれを正しく行っていないと推測しています。これを達成するためのより一般的な方法があります。私が成し遂げようとしていることに精通している人からの指示をいただければ幸いです。
よろしくお願いします、-マット
c# - c# DataGridView.DataSource = BindingList が機能しない
バインディング リストを作成してBindingList<RunData>
渡しますCustomMessageBox.Show()
がDataGridView
、リスト要素が表示されません。
これまで使用BindingList
したことはありませんが、オンラインで見つけた例からすると、すべて問題なく実行できたようです。どんな助けでも大歓迎です。
ありがとう!
編集
違いがある場合は、.NET 2.0 を使用しています。
c# - バインディングリストとUIコントロール、編集時に更新されない
BindingListをリストボックスに双方向でバインドしています。バインディングリストには、アイテムがバインディングリストに追加または削除された場合にのみリストボックスを更新する画像が多数含まれています。アイテムが変更されたときにバインディングリストがlistchangedイベントも発生させるようにするにはどうすればよいですか?
編集:私が抱えている問題は、オブジェクトのプロパティが変更されておらず、ベースオブジェクトが変更されていないことです。
ただし、これを行った場合、これは機能しません。
次に、バインディングパスをImage.Sourceに設定すると、正しく更新されます。これは、Imageのプロパティが変更されたためですが、最初の例の場合、リスト内の直接アイテムのみが変更されています。では、2番目の例と同じ動作をどのように取得できますか?
最終編集: BindingListの代わりにObservableCollectionを使用すると、この問題が修正されるようです。コレクションの変更を通知するのは同じだという印象を受けました。以下の完全な答え
.net - 子バインディング リストの変更が対応するバインディング ソースに反映されない
子クラス SampleTests を持つクラス Sample があります。プレゼンター クラスには、BindingList(Of Sample) プロパティ、CurrentSamples があります。プレゼンターには、バインディング リスト内の指定されたサンプルにテストを追加する AddTest メソッドもあります。
フォームには、プレゼンターの CurrentSamples プロパティにバインドされた SampleBindingSource があります。SampleBindingSource を DataSource として取り、その DataMember を SampleTest に設定する SampleTestBindingSource もあります。
AddTest メソッドを使用すると、テストが実際にそのサンプルに追加されることを確認しました。また、SampleBindingSource に追加されたテストがあることも確認しました。これは、bindingsource レコードをループ処理し、各レコードのテスト数をカウントすることによって行いました。ただし、2 つのテストがあるサンプルの SampleTestBindingSource にレコード数を表示すると、SampleTestBindingSource には 1 つのレコード/テストしか表示されません。
プレゼンターのバインディング リスト、SampleTestsBindingSource、および SampleBindingSource で ResetBindings を試しました。2 つのバインディングソースでも EndEdit を試しました。これらの試みのいずれも、SampleTests の変更を SampleTestsBindingSource に伝達しません。
プレゼンターの変更を取得して、SampleTestsBindingSource まで伝播するにはどうすればよいですか?
c# - BindingListここで、T は他のインターフェイスを実装するインターフェイスです
T が A インターフェイスを拡張するインターフェイスである BindingList にこだわっています。この bindingList をバインディングで使用すると、T からのプロパティのみが表示され、継承された A インターフェイスからのプロパティは表示されません。なぜそれが起こっているのですか?.net のバグのようです。これは、2 つのプロジェクトで共通の機能を共有するために必要でした。また、PropertyChanged イベントが baseImplementation からトンネリングされると、バインディング リストの PropertyDescriptor が空になります。添付されたインターフェースと実装。最後にSetUpメソッド