C#更新绑定到通用列表的combobox

我的表单上有一个combobox,它绑定到一个通用的字符串列表,如下所示:

private List mAllianceList = new List(); private void FillAllianceList() { // Add alliance name to member alliance list foreach (Village alliance in alliances) { mAllianceList.Add(alliance.AllianceName); } // Bind alliance combobox to alliance list this.cboAlliances.DataSource = mAllianceList; } 

然后,用户可以在combobox中添加或移除项目。
我在别处读过,只需在通用列表中添加或删除项目,combobox的内容就会自动更新; 如果我对它使用Sort(),应该会发生同样的事情。
但由于某种原因,我无法做到这一点。 我可以看到combobox的DataSource属性在我添加/删除/排序项时正确更新,但combobox中显示的内容不是DataSource属性中的内容。

我肯定错过了什么或做错了什么。
提前致谢!

编辑:
我选择的答案解决了添加和删除的问题,但是BindingList对象无法排序,这对我来说是必要的。 我找到了一个解决方案,通过inheritanceBindingList和添加排序function来构建自定义类,但我想知道在我的情况下是否有更简单的解决方案。
关于如何轻松解决这个问题的任何建议?

最简单的方法是简单地使用BindingList,如下所示:

 private List mAllianceList = new List(); private BindingList bindingList; private void FillAllianceList() { // Add alliance name to member alliance list foreach (Village alliance in alliances) { mAllianceList.Add(alliance.AllianceName); } bindingList = new BindingList(mAllianceList); // Bind alliance combobox to alliance list this.cboAlliances.DataSource = bindingList; } 

然后,从现在开始,只需处理绑定列表即可添加和删除项目。 这将从List和ComboBox中删除它。

编辑:为了回答你关于排序的问题,我想最容易(但可能是“hacky”)这样做的方式是这样的:

 mAllianceList.Sort(); bindingList = new BindingList(mAllianceList); this.cboAlliances.DataSource = bindingList; 

所以基本上,排序后,您创建一个新的绑定列表并重置数据源。 也许有一个更优雅的方式去做,但这应该工作。