所以我有一个组合框
cmbSpecifics1.Items.AddRange(typeof(Aggressive).GetEnumNames());
我用enum填充
public enum Aggressive
{
Yes,
No,
Sometimes,
Only_when_hungry
}
如何检索其选定值并将其发送到属性?
public Aggressive RealAggressiveLevel
{
get { return _aggressive; }
set { _aggressive = value; }
}
Bee iBee = new Bee(animal);
iBee.RealAggressiveLevel = ???cmbSpecifics1.SelectedValue???
这就是我填充的方式:
lblSpecifics1.Text = "Aggressive:";
cmbSpecifics1.Items.Clear();
cmbSpecifics1.Items.AddRange(typeof(Aggressive).GetEnumNames());
这是我在
上获得null ref异常的行iBee.RealAggressiveLevel = (Aggressive)Enum.Parse(typeof(Aggressive), cmbSpecifics1.SelectedValue.ToString());
这是我如何添加数据
_animal = ((AnimalType)lbCategory.SelectedIndex);
switch (_animal)
{
case AnimalType.Insect:
switch ((InsectTypes)lbAnimalObject.SelectedIndex)
{
case InsectTypes.Bee:
Bee iBee = new Bee(animal);
iBee.RealAggressiveLevel = (Aggressive)Enum.Parse(typeof(Aggressive), cmbSpecifics1.SelectedValue.ToString());
iBee.Worker = tbSpecific1.Text;
iBee.Color = tbSpecific2.Text;
animalManager.Add(iBee);
break;
提前干杯
答案 0 :(得分:1)
您需要将SelectedValue
转换为字符串,然后使用Enum.Parse
转换回Enum
Aggressive
。
ComboBox.SelectedValue
返回Object
然后需要转换为String,因为Enum.Parse需要String作为输入。返回类型也是object
,因此需要再次转换(Cast)到Enum。以下是Enum.Parse
方法的签名。
public static object Parse(
Type enumType,
string value
)
因此,以下代码应该适合您。
iBee.RealAggressiveLevel = (Aggressive) Enum.Parse(typeof(Aggressive), cmbSpecifics2.SelectedValue.ToString());