将 ComboBox 与 List<string> 同步 [C#]
Posted
技术标签:
【中文标题】将 ComboBox 与 List<string> 同步 [C#]【英文标题】:Synchronize a ComboBox with a List<string> [C#] 【发布时间】:2012-02-27 18:10:35 【问题描述】:有什么方法可以将我的List<string>
与ComboBox
同步?
我想要的是我的 ComboBox,它会根据列表的变化自动更新它的内容。
我尝试使用 ComboBox.DataSource
属性,但这不会更新 ComboBox,它只会填充一次,然后就是这样,所以...
【问题讨论】:
【参考方案1】:使用BindingSource 对象。
List<string> list = new List<string>();
BindingSource bsource=new BindingSource();
//Set list dataSource
bsource.DataSource = list;
comboBox1.DataSource = bsource;
//Now add an element via Binding object
bsource.Add("One");
bsource.Add("Two");
或者您可以尝试使用ArrayList.Adapter 方法创建 IList 的适配器包装器。
数组列表项;
items=ArrayList.Adapter(comboBox1.Items);
items.Add("one");
【讨论】:
它使用BindingSource
对象工作!只剩下一个问题:我使用这个 List 实例化了许多 ComboBox,所有 ComboBox 都同步在一起,所以 ...【参考方案2】:
尝试用ObservableCollection<string>
替换您的List<string>
。
【讨论】:
你是否使用数据绑定,如果使用,请使用组合框的 ItemsSource 属性 问题是我可能使用它的方式不好......你如何将它设置为 ComboBox 的数据资源?我尝试使用.DataSource
,但它不起作用...如果我使用.DataBindings
,则不接受该类型所以...我刚刚尝试ItemsSource
,该属性不存在...
好的,我们说的是 WinForms 还是 WPF?
我正在使用 WinForms System.Windows.Forms.ComboBox
AFAIK 如果你使用 WinForms 这不起作用,你必须调用 combobox.Refresh();【参考方案3】:
请查看示例:How to: Create and Bind to an ObservableCollection。
有关绑定源的更多信息:Binding Sources Overview。
更新:
对不起,我没有提到你使用的是 Windows 窗体,所以请看问题:WinForms ComboBox data binding gotcha。
【讨论】:
以上是关于将 ComboBox 与 List<string> 同步 [C#]的主要内容,如果未能解决你的问题,请参考以下文章
将 List 中的数据放入 DataGrid ComboBox
在WPF使用中读取一个配置文件获得一个结构体list,然后将数据绑定到Combobox下拉列表框中,如何实现?