子窗体上的 C# ComboBox 未更新
C# ComboBox on Child Form Not Updating
我在子窗体 (Form2) 上有一个组合框,它的数据源需要更改。当我在父级 (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; });
这是标签 class:
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;
}
}
对于遇到相同问题的其他人,在将 comboBox1.DataSource
设置为新的对象列表时,您还需要更新 comboBox1.DisplayMember
设置。这是我的最终代码:
comboBox1.DataSource = null;
comboBox1.DataSource = FilteredList;
comboBox1.DisplayMember = "Name";
我在子窗体 (Form2) 上有一个组合框,它的数据源需要更改。当我在父级 (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; });
这是标签 class:
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;
}
}
对于遇到相同问题的其他人,在将 comboBox1.DataSource
设置为新的对象列表时,您还需要更新 comboBox1.DisplayMember
设置。这是我的最终代码:
comboBox1.DataSource = null;
comboBox1.DataSource = FilteredList;
comboBox1.DisplayMember = "Name";