我对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个ComboBoxes,我认为不是为每个ComboBox编写所有这些,我可以创建一个函数,但无法想象如何做到这一点。还有办法改变名字吗?例如,当我下拉框时,它显示:dbInteger,dbBigInt?我可以更改那些显示整数,大整数?提前谢谢。
答案 0 :(得分:9)
您可以在一行中执行此操作
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
...
答案 1 :(得分:2)
public void UpdateComboBox(ComboBox cmbBox, Type t)
{
foreach(string item in Enum.GetNames(t))
{
cmbBox.Items.Add(item);
}
}
用法:
UpdateComboBox(comboBox1, typeof(DAO.DataTypeEnum));
答案 2 :(得分:1)
创建一个接收组合框作为参数的函数:
static void PopulateComboBox(ComboBox comboBox)
{
comboBox.Items.Add(DAO.DataTypeEnum.dbInteger);
comboBox.Items.Add(DAO.DataTypeEnum.dbBigInt);
....
}
这样称呼:
PopulateComboBox(comboBox1);
PopulateComboBox(comboBox2);
....
答案 3 :(得分:1)
如果您尝试枚举DAO.DataTypeEnum?:
public static void FillComboBox(ComboBox cb)
{
cb.AddRange(Enum.GetValues(typeof(DAO.DataTypeEnum);
}
答案 4 :(得分:0)
将代码移动到接受ComboBox
作为参数的方法中。
private void AddValues(ComboBox comboBox)
{
comboBox.Items.Add(DAO.DataTypeEnum.dbInteger);
comboBox.Items.Add(DAO.DataTypeEnum.dbBigInt);
...
...
}
然后使用AddValues(comboBox1);
您也可以为ComboBox设置显示值,您可以将其设置为绑定类的特定属性。我不确定您是否可以使用枚举值列表来执行此操作,但如果它们各自都有关联的描述,则可能会显示该值。