UIはこんな感じ。
コンボボックスに用紙サイズを登録する部分で
サイズをひとつづつ追加してたらとてもパフォーマンスが悪くなってしまいました。
以下のような変更ではやくなったので、メモ。
コントロールへの項目の追加にはaddrange()を使用すべきという
記述がこちらにあったので、まずはそれを実施。
http://msdn.microsoft.com/ja-jp/magazine/ee221437.aspx
for文のなかで配列を作って、最後にコンボボックスにaddrange()で代入。という風に作り変えてみたがあまり変化がなかった。
その後、コレクションを配列に変換できることがわかり、そのように手直ししたところ
パフォーマンス的な問題はなくなった。for文もなくなりとてもすっきり。
■変更前のソース
- PaperSize pkSize;
- for (int i = 0; i < printDoc.PrinterSettings.PaperSizes.Count; i++ )
- {
- pkSize = printDoc.PrinterSettings.PaperSizes[i];
- comboPaperSize.Items.Add(pkSize);
- }
- PaperSize[] pkSizearr = new PaperSize[printDoc.PrinterSettings.PaperSizes.Count];
- printDoc.PrinterSettings.PaperSizes.CopyTo(pkSizearr, 0);
- comboPaperSize.Items.AddRange(pkSizearr);
- コレクション.CopyTo(配列, 0)
0は何番目からコピーするかをしていする。
0 件のコメント:
コメントを投稿