Ошибка установки данных в Combo-box с List'a
Хотел попросить помощи в решении ошибки установки данных в Combo-box в WinForm'e, которые я получил с Combo-box'a сайта. Вся суть в том, что данные с сайта я спарсил, запихнул в List, но установить не могу, т.к. вылетает ошибка "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "combo-box" не из того потока, в котором он был создан."
Но что еще интересно и ставит меня в тупик, я вручную запихиваю в List данные, а потом при нажатии на кнопку - данные отображаются.
Код:
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";
}
{
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";
}
Код:
public class ComboItem
{
public string Name { get; set; }
public int Id { get; set; }
public ComboItem(string text, int value)
{
Name = text;
Id = value;
}
}
/*-------------------------*/
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";
{
public string Name { get; set; }
public int Id { get; set; }
public ComboItem(string text, int value)
{
Name = text;
Id = value;
}
}
/*-------------------------*/
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";
Код:
cb_category.BeginInvoke((Action)delegate
{
bs.DataSource = items;
cb_category.DataSource = bs.DataSource;
cb_category.DataSource = items;
cb_category.DisplayMember = "Name";
cb_category.ValueMember = "Id";
});
{
bs.DataSource = items;
cb_category.DataSource = bs.DataSource;
cb_category.DataSource = items;
cb_category.DisplayMember = "Name";
cb_category.ValueMember = "Id";
});
во втором куске кода нечайно скопировал не правильный кусок кода... забыл скобки в cb_category.DisplayMember = Name; -> cb_category.DisplayMember = "Name";