Согласно обсуждению в комментарии к вопросу.Вы не хотите, чтобы ваш combox загружался при событии Load формы, и вы также не хотите загружать его в потоке.
И основное требование не должно иметь эффекта мерцания (который вы имеете, как и при самом событии click, которым вы являетесьзагрузка комбобокса - поэтому комбобокс сначала будет виден пустым, а затем загружен).
Лучшее, что вы можете сделать, это изменить событие, когда вы загружаете свой комбобокс.Событие должно быть таким, которое возникает перед событием щелчка, поэтому, когда пользователь щелкает по нему, выпадающий список будет загружен.
скажем, MouseEnter
событие выпадающего списка.Собираясь щелкнуть по нему, пользователь должен сначала ввести мышью в поле со списком, в это время это событие будет вызвано, вы можете загрузить свой список со списком.
как показано ниже:
private void combobox1_MouseEnter(object sender, EventArgs e)
{
combobox1.Items.Clear();
combobox1.SetBindingToLookup(dataSource);
//for (int i = 0; i < options.Count(); i++)
//{
// comboBox1.Items.Add(options[i]);
//}
}
Примечание: это событие будет вызвано, если у пользователя есть наведенная мышь (даже если по ошибке), но, как и все эти случаи, будет сделано после загрузки формы.Общая производительность не повлияет.
другое возможное событие - это DropDown
событие, как предложил BaskarJohn в комментариях ниже.
, используя это событие, вы можете загрузить комбинированный список двумя способами (мышьвзаимодействие с щелчком и клавиатурой).
private void comboBox1_DropDown(object sender, EventArgs e)
{
combobox1.Items.Clear();
combobox1.SetBindingToLookup(dataSource);
}
Единственное, с чем вы можете столкнуться, это будет немного медленным (как вы упомянули в комментариях вопроса, что загрузка занимает 0,5 - 1 секунды) при открытии dropdown