- PR -

ユーザコントロールの表示速度

1
投稿者投稿内容
初心者さん
会議室デビュー日: 2005/08/25
投稿数: 16
投稿日時: 2006-11-06 15:34
環境
Windowsアプリケーション
VB.net2005

LabelとTextを結合したユーザコントロールを作成しました。
FormにはTabControlを配置し、各TabPageに作成したユーザコントロールを
約20個程貼り付けました。

そうすると、Tabを切り替えると表示速度が遅くなるのです。
コントロールのOnLoadイベントは画面の起動時に発生するので
Tabの切り替え時には何もイベントは発生しません。
ユーザコントロール側ではTextBoxやLabelの背景等を変更するだけで特別な処理は行っていません。

メモリは1GBあるので問題はないと思うのですが。。

誰かご存知の方がいらっしゃいましたら、教えていただけませんでしょうか。
よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-06 16:53
引用:

初心者さんさんの書き込み (2006-11-06 15:34) より:

LabelとTextを結合したユーザコントロールを作成しました。F
ormにはTabControlを配置し、各TabPageに作成したユーザコントロールを約20個程貼り付けました。

そうすると、Tabを切り替えると表示速度が遅くなるのです。


ユーザーコントロールのせいだと思ったのは何故でしょうか?
問題の切り分けを行ったからこそ言い切っているのだと思いますが、その決め手は何だったのでしょうか?

引用:

ユーザコントロール側ではTextBoxやLabelの背景等を変更するだけで特別な処理は行っていません。
メモリは1GBあるので問題はないと思うのですが。。


背景色が TabPage と同一でなければ、描画によるコストが発生します。
描画に関して言えば、今回はメモリのスペックが直接関係することはないと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
初心者さん
会議室デビュー日: 2005/08/25
投稿数: 16
投稿日時: 2006-11-06 17:13
じゃんぬねっとさん返信ございます。

書き方が悪く申し訳ありません。

ユーザーコントロールのせいだと思ったのは、
テスト画面を作成し、通常のTextBoxやComboBoxを同数TabPageに貼り付けて
Tabの切り替えを行った所、表示速度は遅くならなかったからです。

作成したユーザコントロールの目的は、現在ActiveなコントロールのLabelのForeColorとTextBoxまたはComboBoxのBackColorを変更し、分かりやすくするためです。

ForeColor、BackColorの変更はユーザコントロール内のEnterイベント、Leaveイベントで行っています。

ブレイクポイントをユーザコントロール内の各プロパティのGet,Setに設定してTabの切り替えを行った所、特に処理は走りませんでした。

ですので、Tabの切り替え時には背景色の描画は行わないのかなと思ったのです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-06 17:26
引用:

初心者さんさんの書き込み (2006-11-06 17:13) より:

ユーザーコントロールのせいだと思ったのは、テスト画面を作成し、通常のTextBoxやComboBoxを同数TabPageに貼り付けてTabの切り替えを行った所、表示速度は遅くならなかったからです。


この検証をするのであれば、Panel コントロールに同数の、
TextBox と ComboBox を含めないと公平とは言えないと思います。
ついでに色も設定して、なるべく同じ条件にしてやらねばなりません。

引用:

ブレイクポイントをユーザコントロール内の各プロパティのGet,Setに設定してTabの切り替えを行った所、特に処理は走りませんでした。
ですので、Tabの切り替え時には背景色の描画は行わないのかなと思ったのです。


取得する必要、設定する必要がなかっただけで、描画処理の有無とは全く関係ありません。
また、描画を疑うのであれば、標準のシステム色を使えば切り分けられます。

原因を特定するのであれば、正しく検証する必要があります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)