C# 组合框不';t显示在单独线程中添加的项目
我正在将项目(字符串)加载到一个单独线程中的组合框中。加载完成后,组合框似乎为空。但是,如果我开始在其中键入现有项目的名称,然后按下向下或向上箭头,它会自动完成我的项目,突然我在组合中看到我的所有项目。我做错了什么? 注意:myItem只是一个使用名为Name的公共属性创建的类,getItems返回这些项的数组C# 组合框不';t显示在单独线程中添加的项目,c#,multithreading,lambda,C#,Multithreading,Lambda,我正在将项目(字符串)加载到一个单独线程中的组合框中。加载完成后,组合框似乎为空。但是,如果我开始在其中键入现有项目的名称,然后按下向下或向上箭头,它会自动完成我的项目,突然我在组合中看到我的所有项目。我做错了什么? 注意:myItem只是一个使用名为Name的公共属性创建的类,getItems返回这些项的数组 void cmb_GotFocus(object sender, System.EventArgs e) { if (cmb.Items.Count ==
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);
}
}
你可以在你的虚拟机中有一个ObservableCollection,并将combobox项资源绑定到它。然后将新项目添加到observablecollection?谢谢Johan,我会尝试的。如果我能找到一个让代码保持原样的解决方案,我会更喜欢它——对我来说似乎更直观。可能是UI实例和线程实例是两个不同的实例。所以你看不到数据。你的代码为meThanushka工作-你所说的“不同实例”是什么意思?代码位于同一类和程序集中。我不是在跟踪你。。。Mehmet-我正在使用VS2010和.NET4.0客户端配置文件。你在用什么?