gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:01:47 26 4
gpt4 key购买 nike

我是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com