我在单独的线程中将项目(字符串)加载到组合框中。加载完成后,组合似乎为空。但是,如果我开始在其中键入现有项目的名称,然后点击向下或向上箭头,它会自动填充我的项目,然后我突然看到组合中的所有项目。我究竟做错了什么? 注意:myItem只是我们使用名为Name的公共属性创建的类,getItems返回这些项的数组。
void cmb_GotFocus(object sender, System.EventArgs e)
{
if (cmb.Items.Count == 0)
{
Thread thread = new Thread(new ThreadStart(GetItems));
thread.Start();
}
}
private void GetItems()
{
try
{
this.Invoke(new Action(() => cmb.Items.Clear()));
myItem[] items = Library.GetItems();
if (items != null && items.Length > 0)
{
foreach (myItem item in items)
{
this.Invoke(new Action(() => cmb.Items.Add(item.name)));
}
}
}
catch (Exception ex)
{
MessageBox.Show("Could not get items.\nError: " + ex.Message);
}
}