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は何番目からコピーするかをしていする。