VB.NetプログラミングTIPS 〜大量のコントロールが配置された画面描画のチラつきを抑制する〜

 私の本業は、C/S(クライアント/サーバ)システム開発です。クライアントは、VB.Netでソフト設計/製作をしております。

本題

 基本的に、画面に配置するコントロール数は、極端に多くならないようにUI設計するのが望ましいとされています。ですが、やむにやまれず無理やりコントロールをギュッと詰め込んだり、あるいは、パネルコントロールなどで切り替える形で、フォーム上に配置されたコントロールの総数が、数百個に及ぶこともあります。
 実際、私が現在開発しているシステムのデータ登録画面もそうです。

チラつき問題

 大量のコントロールを配置すると、画面展開や切替の処理時に、表示がチラつきます。
 多くの場合、このチラつきを回避するために、各コントロールに対してダブルバ
ッファを設定するなどを行いますが、根本的な解決法ではありません。

提案手法

 様々な試行錯誤を繰り返した結果、私が現在採用している方法をご紹介します。
 
 ひとつは、描画モードの変更です。
 具体的には、フォーム上に配置された各コントロールの描画処理が全て完了するまで、ディスプレイ上の表示を待機して、準備ができたら「ドンッ」と表示します。やり方は後述します。

 ふたつめは、Panelコントロールの活用です。
 TabControlなどは、Windowsから描画指令(WM_PAINT)を受け取ると、コントロール内の全てのページに対して、内部的に描画処理が走るので、とても重くなるんです。
 ですので、Panelコントロールを活用して、タブ切替の動作を 擬似的に再現するというもの。Panelは、非活性時に描画処理 = OFFにできるので、不要なPanelを適切に設定しておけば、ユーザがストレスを感じない程度のレスポンスに仕上げることができると思います。

具体的な実装方法

1.描画モードの変更

ここから先は

487字

¥ 2,000

この記事が気に入ったらサポートをしてみませんか?