C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

コントロールをたくさん配置すると重くなる

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■94156 / inTopicNo.1)  コントロールをたくさん配置すると重くなる
  
□投稿者/ 宇宙 (1回)-(2020/03/22(Sun) 15:30:53)

分類:[.NET 全般] 


VB.NET2015を使用しております。

フォーム上に300以上のコントロールを配置しているのですが、
全てのコントロールをそのまま配置するとフォームに収まりきらないため、
Tabpageを使って、15ページくらいに分けて配置しています。


しかし、このように大量のコントロールを並べると
非常に処理が重くなってしまいます。

例えば、Form1のあるコントロールの名称を調べるために
そのコントロールをクリックします。
すると20〜30秒間くらいフリーズします。
そして、やっと動作するようになったと思い、
次は、Form1のコードをクリックして、
コードを編集しようとするのですが、
ここでもまた、20〜30秒くらいかかります。

再度、Form1のあるコントロールの名称を調べるために
別のコントロールをクリックすると
更に20〜30秒かかり・・・
という感じで、仕事がなかなか先に進みません。

フォームを分けて配置すれば良いのかも知れませんが、
15ページもあるTabpageを別のフォームに分けたりすると
15個のフォームになったりして、現実的ではありません。

また、今はまだ開発途中でこれから更にコントロールの数は増えると思います。


どうすれば、コントロールの数が増えても処理を軽くすることができますか?


引用返信 編集キー/
■94157 / inTopicNo.2)  Re[1]: コントロールをたくさん配置すると重くなる
□投稿者/ Azulean (1136回)-(2020/03/22(Sun) 18:57:57)
No94156 (宇宙 さん) に返信
> しかし、このように大量のコントロールを並べると
> 非常に処理が重くなってしまいます。
Windows Forms であれば、「そういうものです」と言えると思います。


> 例えば、Form1のあるコントロールの名称を調べるために
> そのコントロールをクリックします。
> すると20〜30秒間くらいフリーズします。
今、問題となっているのはデザイナの動作(Visual Studio 内でコントロールを配置するなどの編集ができる画面のこと)だけですか?
実行している間の動作(応答性)は問題ないと言うことですか?

そうであれば、TabPage に貼り付けているコントロールを、ユーザーコントロールという部品に分けてそちらで実装し、TabPage にはそのユーザーコントロールを貼り付けることを考えても良いかもしれません。
作り方の良い説明…はすぐに紹介できないですが、「Windows forms usercontrol」などと検索すればいくつかサイトは出てくるようです。


> どうすれば、コントロールの数が増えても処理を軽くすることができますか?
前述のようにユーザーコントロールである程度分割することはできますが、究極的には数が増えれば打つ手がない可能性はあります。
引用返信 編集キー/
■94158 / inTopicNo.3)  Re[1]: コントロールをたくさん配置すると重くなる
□投稿者/ 魔界の仮面弁士 (2626回)-(2020/03/22(Sun) 21:50:51)
No94156 (宇宙 さん) に返信
> 例えば、Form1のあるコントロールの名称を調べるために
> そのコントロールをクリックします。
> すると20〜30秒間くらいフリーズします。

300 という数が多い方とはいえ、デザイン時に
数十秒も待たされるのはちょっと不自然ですね。
レイアウト調整やレンダリングに時間のかかるコントロールがあるのではないでしょうか。

たとえば TableLayoutPanel を使っていたりはしないでしょうか?
特に、TableLayoutPanel 内に TableLayoutPanel を貼るとかなり重くなります。
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/best-practices-for-the-tablelayoutpanel-control

あとは背景画像を設定しておいた状態で、その上のコントロールの背景色を透過設定にしているとか…。
引用返信 編集キー/
■94162 / inTopicNo.4)  Re[2]: コントロールをたくさん配置すると重くなる
□投稿者/ 中博俊 (6回)-(2020/03/23(Mon) 10:02:20)
でも300は多い気がしますよ

引用返信 編集キー/
■94177 / inTopicNo.5)  Re[3]: コントロールをたくさん配置すると重くなる
□投稿者/ 宇宙 (2回)-(2020/03/23(Mon) 22:54:27)
Azulean さん に返信

ユーザーコントロールという手がありましたか
一度検討してみます

魔界の仮面弁士 さんに返信
TableLayoutPanel は多用しています。
TableLayoutPanel を入れ子では使っていませんが。
Tabpageの中にGroupBoxが複数あり、

それぞれのGroupBoxの中に TableLayoutPanelが入った構成になっています。

これも重くなる要因になりますでしょうか?

もし、そうだったとしても
TableLayoutPanelを使わないと、コントロールがうまく並んでくれないので、
これは使わざる終えないと思うのですが。


引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ