77922


以下画像のように`UserControl`を積み重ねたいのですが、親要素?には何を使えばいいでしょうか？  
スクロールが可能なもので、軽量なものを探しています。

[![画像の説明をここに入力](https://i.stack.imgur.com/Xkkyn.png)](https://i.stack.imgur.com/Xkkyn.png)


CC BY-SA 4.0
2021-07-02T02:30:22.153
77918
2022-06-05T19:04:47.590
2021-07-02T02:42:37.217
40856
40856
question
c# .net
C# .Net FrameworkにてUserControlを縦積みにしたいのですが、なにを使用するのがよいのでしょうか？


WindowsFormsではコントロールごとにウィンドウハンドルが生成される関係で大量のコントロール配置をするUIデザインは解決策のない状況になります。

昔からコントロールが多いと重い、遅いという話題は尽きません。  
[http://bbs.wankuma.com/index.cgi?mode=al2&namber=9554&KLOG=22](http://bbs.wankuma.com/index.cgi?mode=al2&namber=9554&KLOG=22)  
<https://dobon.net/vb/bbs/log3-19/11327.html>  
[https://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15749&forum=7&start=16](https://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=15749&forum=7&start=16)

このため、大量のコントロールを配置するような画面仕様を避けることを考えた方が良いでしょう。

たとえば、UserControlは10個くらいにして、スクロールしたら中身を入れ換えて表示して、擬似的にスクロールしているように見せるなど。  
（実際には、1ページに10個表示、ページ切り換えボタンで11個目～、21個目～からと表示を切り替えるようなUIが良いかもしれません）


CC BY-SA 4.0
2021-07-02T10:13:46.020
77922
2021-07-02T10:13:46.020
4684
77918
answer


コントロールが多くなると描画回数と裏で発生するウィンドウメッセージの送受信量が膨大になり、それだけで相当な負荷になるので、どうしても速度は低下します。  
DataGridView、スプレッドシート系のコンポーネント（有償のが殆どですが…）、組み込みブラウザ等をカスタマイズして、それっぽい入力画面を作るのも手かもしれません。


CC BY-SA 4.0
2021-07-03T02:01:58.320
77928
2021-07-03T02:01:58.320
41943
77918
answer