我在需要更改其数据源的子窗体(Form2)上有一个ComboBox。当我在父级(Form1)上试用时,可以通过先将其无效来更新CB:
var FilteredList = new List<Tag>();
FilteredList = ApplyFilter(OriginalList);
comboBox1.DataSource = null;
comboBox1.DataSource = FilteredList;
那很好。但是,子窗体上的相同代码不起作用。数据在那里。我可以在断点处浏览新项目,但是表单上的cb为空。我什至尝试刷新并调用DoEvents():
comboBox1.DataSource = null;
comboBox1.DataSource = FilteredList;
this.Refresh();
Application.DoEvents();
我也尝试调用更改,但是那没有用,或者我没有正确执行。
comboBox1.Invoke((MethodInvoker)delegate { comboBox1.DataSource = FilteredList; });
这是Tag类:
public class Tag
{
public string Name { get; set; }
public string Desc { get; set; }
public string Type { get; set; }
public string Station { get; set; }
public override string ToString()
{
return Name;
}
}
答案 0 :(得分:0)
对于具有相同问题的其他任何人,将comboBox1.DataSource
设置为新的对象列表时,也需要更新comboBox1.DisplayMember
设置。这是我的最终代码:
comboBox1.DataSource = null;
comboBox1.DataSource = FilteredList;
comboBox1.DisplayMember = "Name";