带有DataSource的Binded ComboBox

时间:2013-12-18 19:59:00

标签: c# .net combobox datagridcomboboxcolumn datagridviewcombobox

我正在尝试使用以下代码从我的组合框填充数据源:

这是我创建绑定的部分

        _columnsLayoutBinding.DataSource = _myColumnsLayout;
        ColumnsLayoutDataGrid.DataSource = _columnsLayoutBinding;
        DataGridCreator.CurrentInstance.CreateDataGrid<ConfigColumns>(ref ColumnsLayoutDataGrid);

然后在DataGridCreator方法调用中,我做了一些检查,并用值

填充组合框。
        var list = (from object type in System.Enum.GetValues(typeof (FontSizeType)) select new KeyValuePair<string, int>(type.ToString(), (int)type)).ToList();
        comboBox.DataSource = list;
        comboBox.DisplayMember = "Key";
        comboBox.ValueMember = "Value";
        return comboBox;

问题是:何时更换用我填充数据源的代码:

            var list = new List<KeyValuePair<string, int>>();

            var id = 0;

            foreach (var type in System.Enum.GetValues(typeof(FontSizeType)))
            {
                list.Add(new KeyValuePair<string, int>(type.ToString(), id));
                id++;
            }

            comboBox.DataSource = list;
            comboBox.DisplayMember = "Key";
            comboBox.ValueMember = "Value";

            return comboBox;

有效。问题似乎是值成员初始值0.然后它从0开始 - 确定。当它从enum start int(6)开始时 - 不工作。

这是我的普查员:

[DataContract]
[Serializable]
[Flags]
public enum FontSizeType
{
    [EnumMember]
    Seis = 6,

    [EnumMember]
    Sete = 7,

    [EnumMember]
    Oito = 8,

    [EnumMember]
    Nove = 9,

    [EnumMember]
    Dez = 10,

    [EnumMember]
    Onze = 11

2 个答案:

答案 0 :(得分:1)

在第一个示例中,您将使用每个对应枚举的整数值填充KeyValuePair.Values。在第二部分中,您使用从零开始的计数器。试试以下内容:

        foreach (var type in System.Enum.GetValues(typeof(FontStyle)))
        {
            list.Add(new KeyValuePair<string, int>(type.ToString(), (int)type));
            id++;
        }

此外,在第一个示例中,您使用的是FontSizeType枚举,而在第二个示例中,您使用的是FontStyle。这是故意的吗?没有足够的背景来确定。

答案 1 :(得分:0)

使用:

int id = 6;

这可以解决您的问题。注意:var对此似乎是不必要的。

对于您的枚举,您使用定义[Flags]但尚未将枚举值设置为以这种方式运行。我建议删除它或更改枚举值。但是,考虑到这个特定的枚举,其中值将枚举元素表示为数字,值必须保持不变。

以下是解释正确使用FlagsWhat does the [Flags] Enum Attribute mean in C#?

的链接