使用多个组合框更改单个数据源

时间:2016-11-07 21:26:50

标签: c# combobox datasource

我正在为角色扮演游戏制作角色生成器。我有一个滚动能力分数的方法,我把它们放在一个数组中。我将数组转换为List。然后我将所有组合框指向数据源。我将它们分开绑定,以便它们都不会更改为相同的数字。不幸的是,一旦选择了列表中的数字,我就遇到了很多问题。到目前为止它是如何看待的。任何帮助,将不胜感激。提前谢谢。

List<int> abilityList = allAtribs.ToList();
        strCombo.DataSource = new BindingSource(abilityList, null);
        dexCombo.DataSource = new BindingSource(abilityList, null);
        conCombo.DataSource = new BindingSource(abilityList, null);
        intCombo.DataSource = new BindingSource(abilityList, null);
        wisCombo.DataSource = new BindingSource(abilityList, null);
        chaCombo.DataSource = new BindingSource(abilityList, null);

1 个答案:

答案 0 :(得分:0)

创建List<int>而不是BindingList<int>,并将其存储在表单成员中。

形式:

private BindingList<int> abilityList;

初始化:

// if allAttribs is int[], you can remove .ToList()
abilityList = new BindingList<int>(allAtribs.ToList());
strCombo.DataSource = new BindingSource(abilityList, null);
dexCombo.DataSource = new BindingSource(abilityList, null);
// etc....

然后您只需从abilityList中删除一个值(或添加新值,更新退出值),更改将自动反映在所有组合框中。

这是因为BindingList<T>除了IList<T>之外还提供了数据绑定感知组件识别的标准更改通知。