PropertyGridを拡張するコントロールがあり、ユーザーがいくつかのプログラムオブジェクトのプロパティを設定できるようになっています。これらのオブジェクトには、プロパティの1つが変更されたときに発生するイベントがあり、PropertyGridはこのイベントをサブスクライブして、プロパティが変更されたときに自身を更新します。私の問題は、多数のオブジェクトが選択され、ユーザーがすべてのオブジェクトに一度にプロパティを設定したときに発生します。コントロールはRefresh()リクエストでいっぱいになりますが、これには長い時間がかかります(たとえば、自動更新機能をオンにすると、最大300個のオブジェクトにプロパティを設定するのに約20秒かかり、オンにするとほんの一瞬です。オフ)。
プロパティグリッドがプロパティを設定しているときにイベントハンドラーがグリッドを更新しないようにしたいのですが、残念ながら、グリッドの設定がいつ「開始」および「停止」するかを判断する方法が見つかりませんでした。プロパティ。私は、次のようなメソッドやオーバーライドできるものがあることを望んでいました...
override void OnSetPropertyStart()
{
suppressRefresh = true;
}
override void OnSetPropertyEnd()
{
suppressRefresh = false;
}
残念ながら、これは当てはまらないようです。プロパティグリッドがプロパティを設定している時期を判断する方法、またはこれと同じ効果を実現する方法は他にありますか?