私は ComboBox を持っていますが、これを再設定すると、かなり時間がかかるようです。プロファイリングを行った後、ほとんどの時間が ComboBox.Items.AddRange(Array) メソッドに費やされていることがわかりました。ComboBox の再作成を実行する方法を示すメソッドの例を以下に示します。
public void Repopulate(IList<MyType> sortedList)
{
MyComboBox.BeginUpdate();
try
{
MyComboBox.Items.Clear();
MyComboBox.Items.AddRange(sortedList.ToArray());
}
finally
{
MyComboBox.EndUpdate();
}
}
sortedList には約 280 個の項目が含まれており、最大 53 個の ComboBox を再設定する必要があります。そのため、これらすべてのコントロールを再設定するにはかなりの時間がかかる可能性があり (高スペックのマシンで約 700 ミリ秒、低スペックのマシンで約 8000 ミリ秒)、私の要件には遅すぎます。sortedList を新しい IList に追加しようとしましたが、(私の高スペックのマシンでは) 約 1 ミリ秒かかりました。
ComboBox の再作成にかかる時間を大幅に短縮する必要があります。理想的には、IList と同様の時間ですが、パフォーマンスの向上は適切です。これまでのところ、再作成の速度を改善する方法を見つけることができませんでした。
ComboBox の再作成にかかる時間を短縮する方法について、誰かアイデアはありますか?