为什么这是一个无效的演员?

B. *_*non 4 c# enums combobox casting selecteditem

我正在使用自定义枚举值填充组合框:

    private enum AlignOptions
    {
        Left,
        Center,
        Right
    }

. . .

    comboBoxAlign1.DataSource = Enum.GetNames(typeof(AlignOptions));
Run Code Online (Sandbox Code Playgroud)

当我尝试将所选项目分配给该枚举类型的var时,但是:

    AlignOptions alignOption;
. . .
    alignOption = (AlignOptions)comboBoxAlign1.SelectedItem;
Run Code Online (Sandbox Code Playgroud)

...它爆炸了:" System.InvalidCastException未处理Message =指定的强制转换无效. "

该项不是AlignOptions类型吗?

UPDATE

Dang,我以为我很聪明.Ginosaji是对的,我不得不改为:

    alignOptionStr = comboBoxAlign1.SelectedItem.ToString();
    if (alignOptionStr.Equals(AlignOptions.Center.ToString()))
    {
        lblBarcode.TextAlign = ContentAlignment.MiddleCenter;
    }
    else if (alignOptionStr.Equals(AlignOptions.Left.ToString()))
    {
        . . .
Run Code Online (Sandbox Code Playgroud)

Ant*_*ram 8

这是一个无效的强制转换,因为你没有枚举,你有枚举的字符串名称表示.要恢复该枚举,您需要解析它.

alignOption = (AlignOptions)Enum.Parse(typeof(AlignOptions), (string)comboBoxAlign1.SelectedItem);
Run Code Online (Sandbox Code Playgroud)