ImageListBoxPicasa が使用するような、多数のサムネイルを表示する一種のコントロールを作成しようとしています。
これは私のデザインです:
4,000 など、FlowLayoutPanel多くのオブジェクトが取り込まれた があります。UserControlそれぞれにイベントUserControlの代理人が割り当てられます。Paintイベントが呼び出されると、Paintサムネイルのメモリ キャッシュがチェックされ、イメージがキャッシュにない場合はディスクから取得されます。
私が解決しようとしている2つの問題があります。
が表示されていなくても、WinForms は
PaintイベントをトリガーするようUserControlです。実際に表示されているのは 10 程度のコントロールだけで、残りは表示されていません (FlowLayoutPanel.AutoScrollは に設定されていtrueます)。その結果、すべての画像のサムネイルを取得しようとするため、時間がかかります。UserControlにオブジェクトを追加するにFlowLayoutPanelは、2 ~ 3 秒ほど時間がかかります。私はそれで暮らすことができますが、それを行うためのより良い方法があるかどうか疑問に思っています:UserControl[] boxes = new UserControl[N]; // populate array panel.SuspendLayout(); panel.Controls.AddRange(boxes); panel.ResumeLayout();