ImageListBox
Picasa が使用するような、多数のサムネイルを表示する一種のコントロールを作成しようとしています。
これは私のデザインです:
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();