我正在将项目(字符串)加载到单独线程中的组合框中。加载完成后,组合似乎是空的。但是,如果我开始在其中输入现有项目的名称,然后点击向下或向上箭头,它会自动完成我的项目,然后我突然看到我的所有项目都在组合中。我究竟做错了什么?注意: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);
}
}