我有一个 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 所需的时间?