c# - 更简单地将许多枚举值添加到组合框

标签 c# function combobox enums

我是 c# 和编程的新手,我想知道如何将这段代码放入函数中。

comboBox1.Items.Add(DAO.DataTypeEnum.dbInteger);
comboBox1.Items.Add(DAO.DataTypeEnum.dbBigInt);
comboBox1.Items.Add(DAO.DataTypeEnum.dbBinary);
comboBox1.Items.Add(DAO.DataTypeEnum.dbBoolean);
comboBox1.Items.Add(DAO.DataTypeEnum.dbByte);
comboBox1.Items.Add(DAO.DataTypeEnum.dbChar);
comboBox1.Items.Add(DAO.DataTypeEnum.dbCurrency);
comboBox1.Items.Add(DAO.DataTypeEnum.dbDate);
comboBox1.Items.Add(DAO.DataTypeEnum.dbDecimal);
comboBox1.Items.Add(DAO.DataTypeEnum.dbDouble);
comboBox1.Items.Add(DAO.DataTypeEnum.dbFloat);
comboBox1.Items.Add(DAO.DataTypeEnum.dbGUID);
comboBox1.Items.Add(DAO.DataTypeEnum.dbLong);
comboBox1.Items.Add(DAO.DataTypeEnum.dbLongBinary);
comboBox1.Items.Add(DAO.DataTypeEnum.dbMemo);
comboBox1.Items.Add(DAO.DataTypeEnum.dbNumeric);
comboBox1.Items.Add(DAO.DataTypeEnum.dbSingle);
comboBox1.Items.Add(DAO.DataTypeEnum.dbText);
comboBox1.Items.Add(DAO.DataTypeEnum.dbTime);
comboBox1.Items.Add(DAO.DataTypeEnum.dbTimeStamp);
comboBox1.Items.Add(DAO.DataTypeEnum.dbVarBinary);

我有 5 个 ComboBox,我想与其为每个 ComboBox 编写所有这些,不如创建一个函数,但不知道如何实现。以及有没有办法更改名称?例如,当我下拉它显示的框时:dbInteger,dbBigInt?我可以更改它们以显示 Integer、Big Integer 吗?提前谢谢你。

最佳答案

你可以在一行中做到这一点

comboBox1.Items.AddRange(Enum.GetNames(typeof(DAO.DataTypeEnum)));

关于显示名称,我通常使用 DescriptionAttribute 并编写一个小的扩展方法来提取该信息,例如

public enum DataTypeEnum
{
    [Description("Integer")]
    dbInteger,
    [Description("Big Int")]
    dbBigInt,
    ...
}

然后使用下面的扩展方法

public static class EnumExt
{
    public static string Description(this Enum value)
    {
        var attr = (DescriptionAttribute)value.GetType().GetCustomAttributes(typeof(DescriptionAttribute), false)
            .FirstOrDefault();
        return attr != null ? attr.Description : value.ToString();
    }
}

还有一点 LINQ

var enums = (DataType[])Enum.GetValues(typeof(DataType));
combo.Items.AddRange(enums.Select(x => x.Description()).ToArray());

那么你应该结束

Integer
Big Int
...

关于c# - 更简单地将许多枚举值添加到组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704899/

相关文章:

c# - 将音频播放到.net中的非默认播放设备

c# - 迁移到 dbcontext LINQ where 子句字符串参数

vba - 动态范围和一个静态项目通过 VBA 到 ComboBox

javascript - 为什么 "return"与 "console.log()"不一样

mysql - 如何从数据库获取自动填充组合框的 ID?

java - 组合框中的 ScrollBar 显示最后一个条目 javax.swings.JScrollbar[,0,0]

c# - 通过传递 .config 文件的路径将键/值对读取到字典中 c#

c# - 如何在 Xamarin Forms 中维护 ListView 项的下载进度

r - 在函数中指定分组变量

mysql 提供相当于 Oracle NVL 的函数