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

本文关键字:单个 数据源 组合 | 更新日期: 2023-09-27 18:16:47

我目前正在制作一款角色扮演游戏的角色生成器。我有一个掷能力分数的方法,我把它们放在一个数组中。我将数组转换为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);

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

代替List<int>,创建BindingList<int>并将其存储在form成员中。

形式:

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>之外,还提供了数据绑定感知组件识别的标准更改通知。