0

このような別の質問を見つけようとしました。これは確かに以前に尋ねられた可能性のあるもののように思われるためです。しかし、私はそれを見つけることができませんでした。

基本的に、私DataGridViewは にバインドされているを持っていBindingList<T>ます。一般に、データ バインディングは非常に優れており、(私たち -- 開発者の) 時間を大幅に節約できることを理解しています。ただし、このグリッドは非常に大きいため、パフォーマンスに重大な問題があります。

以前の経験に基づいて、タイマーを実装するのではなく、タイマーで表示されているセルだけを手動で更新することで、パフォーマンスを大幅に改善できると確信しています (このグリッドの値の多くは、1 回あたり数十回変化するため、実際には実行可能なオプションではありません)。秒) または呼び出します。しかし、問題があります。グリッド内のセルを 1 つずつ手動で更新すると、更新のたびにデータバインド オブジェクトの対応するプロパティがトリガーされ、合計するとパフォーマンスが大幅に低下します。DataGridViewINotifyPropertyChangedRefreshset

setグリッドのセルに入力する値はこれらのプロパティから直接取得されるため、これらすべての呼び出しを行う必要はありません (つまり、基本的に値を読み取ってからそれ自体に書き戻します)。

のこの機能を一時的に無効にできればいいのですがDataGridView、しばらくの間、グリッドの更新に基づいて基になるデータ ソースを更新する機能をオフにします。次に、手動での更新が完了したら、その機能を再びオンにして、ユーザーの更新データ ソースに影響を与えるようにします。

プロパティをに設定してBindingSource/を呼び出してみました。しかし、それはうまくいかないようでした。コールは引き続き行われました。DataSourceBindingList<T>SuspendBindingResumeBindingset

私がここで行っていることを達成する方法はありますか? 私は完全に間違った道を歩いていますか?

4

1 に答える 1

1

あなたの質問に直接答える知識はありませんが、必要に応じて行をロード/更新する方法について説明している MSDN の記事を見つけました。

http://msdn.microsoft.com/en-us/library/ms171624.aspx

それは実行可能な解決策かもしれませんし、別の方法を考え出すきっかけになるかもしれません。

そうでない場合は、誰かがすぐに本当の答えをくれることを願っています o.-

于 2010-06-18T16:25:11.567 に答える