C# 将数据从动态列表设置为组合框时出错
你好。 想请求帮助解决WinForm中组合框中的数据集错误,我从网页组合框中获得。关键是,我解析的站点数据被塞进了列表,但由于这个错误,我无法设置C# 将数据从动态列表设置为组合框时出错,c#,multithreading,winforms,list,combobox,C#,Multithreading,Winforms,List,Combobox,你好。 想请求帮助解决WinForm中组合框中的数据集错误,我从网页组合框中获得。关键是,我解析的站点数据被塞进了列表,但由于这个错误,我无法设置 "Invalid operation in several threads: attempt to access control "combo-box" from another thread in which it was created." 但更有趣和困惑的是,我必须手动将数据推送到列表中,然后当我按下按钮时,数据就会显示出来 public
"Invalid operation in several threads:
attempt to access control "combo-box" from another thread
in which it was created."
但更有趣和困惑的是,我必须手动将数据推送到列表中,然后当我按下按钮时,数据就会显示出来
public class ComboItem
{
public string Name { get; set; }
public int Id { get; set; }
public ComboItem(string text, int value)
{
Name = text;
Id = value;
}
}
private void button3_Click(object sender, EventArgs e)
{
List<ComboItem> items = new List<ComboItem>();
BindingSource bs = new BindingSource();
items.Add(new ComboItem("John", 1));
bs.DataSource = items;
cb_category.DataSource = bs.DataSource;
cb_category.DisplayMember = "Name";
cb_category.ValueMember = "Id";
}
公共类组合项
{
公共字符串名称{get;set;}
公共int Id{get;set;}
公共组合项(字符串文本,int值)
{
名称=文本;
Id=值;
}
}
私有无效按钮3\u单击(对象发送者,事件参数e)
{
列表项=新列表();
BindingSource bs=新的BindingSource();
添加(新组合项(“John”,1));
bs.DataSource=项目;
cb_category.DataSource=bs.DataSource;
cb_category.DisplayMember=“Name”;
cb_category.ValueMember=“Id”;
}
如果我动态地将数据放入列表中,就会得到一个错误
public class ComboItem
{
public string Name { get; set; }
public int Id { get; set; }
public ComboItem(string text, int value)
{
Name = text;
Id = value;
}
}
/*-----------MY Function--------------*/
for (int i = 0; i < idCategory.Count-1; i++)
{
int num = Convert.ToInt32(idCategory[i]);
nameCategory = SearchAndInput(dataCategory.InnerHtml, "<option value=""+num+"">", "rn");
items.Add(new ComboItem(nameCategory[0].ToString(), num));
}
BindingSource bs = new BindingSource();
bs.DataSource = items;
cb_category.DataSource = bs.DataSource;
cb_category.DataSource = items;
cb_category.DisplayMember = "Name";
cb_category.ValueMember = "Id";
公共类组合项
{
公共字符串名称{get;set;}
公共int Id{get;set;}
公共组合项(字符串文本,int值)
{
名称=文本;
Id=值;
}
}
/*-----------我的职能--------------*/
对于(int i=0;i
请告诉我在这种情况下如何组织第二个线程。非常感谢。哦对不起,我的英文是:)调用combobox对象上的
BeginInvoke
,在UI上执行委托
像这样
这将异步执行委托。如果希望同步执行委托,请调用Invoke
。可能重复的
cb_category.BeginInvoke((Action)delegate
{
cb_category.DataSource = items;
cb_category.DisplayMember = "Name";
cb_category.ValueMember = "Id";
});