检索selecteditem组合框

时间:2017-01-30 19:20:23

标签: c# winforms combobox

所以我有一个组合框

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;

提前干杯

1 个答案:

答案 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());