我有一个用户控件,它实际上是一个包装器下拉列表。
我设置了这样的类型:
public Type ListType { get; set; }
然后尝试根据此类型创建下拉列表项。
这是我的第一次尝试:
void SetOptions()
{
DropDownList.Items.Clear();
var options = Enum.GetNames(ListType).ToList();
options.ThrowNullOrEmpty("options");
foreach (var s in options)
{
var e = Enum.Parse(ListType, s) as Enum;
var item = new ListItem(e.Description(), s);
DropDownList.Items.Add(item);
}
}
但是,我想知道是否可以这样做:
void SetOptions()
{
DropDownList.Items.Clear();
var options = Enum.GetValues(ListType); // need to cast this to type of ListType
foreach (var o in options)
{
var item = new ListItem(o.Description(), o.ToString());
DropDownList.Items.Add(item);
}
}
我无法弄清楚如何将值列表转换为正确的枚举类型。
有什么想法吗?
答案 0 :(得分:2)
你可以这样做:
void SetOptions()
{
DropDownList.Items.Clear();
var options = Enum.GetValues(ListType); // need to cast this to type of ListType
foreach (var o in options)
{
var item = new ListItem(o.Description(), o.ToString());
item.Tag = o;
DropDownList.Items.Add(item);
}
}
然后,您可以从Tag属性中获取所选列表项的类型。