繁体   English   中英

C# - 封装Enum,并从ComboBox中检索其值

[英]C# — Encapsulate Enum, and retrieve its values from a ComboBox

我有一个简单的枚举:

    public enum Status
    {
        sad,
        happy
    };

    protected Status status;

我已成功将其值绑定到组合框:

        cmbStatus.DataSource = Enum.GetValues(typeof(StatusClass.Status));

我现在希望可以检索组合框的所选项/值/索引。 但我遇到了麻烦。 我已经尝试封装枚举,然后检索它的值,如下所示:

    public Status StatusType
    {
        get { return status; }
        set { stats = value; }
    }

        person.StatusType = cmbStatus.SelectedItem.ToString();

这给了我这个错误:“不能隐式地将类型'string'转换为StatusClass.Status.Status'。

我已经尝试将枚举名称(例如'sad'和'happy'作为文本而不是其值)这样(但我不确定如何封装它,也不确定它是否正常工作):

string statusType = Enum.GetName(typeof(Status), status);

如果我可以封装这个,也许我会解决我的问题。 我在这一点上很难过; 我是新手。 任何帮助都真诚地感谢。 这里希望这一切都有意义,并提供足够的信息。 谢谢。

GetValues返回枚举中所有值的列表( sad (0)happy (1) )。

因此, cmbStatus.SelectedItem已经包含了您需要的枚举值,您只需要将其静态转换回正确的类型:

person.StatusType = (Status)cmbStatus.SelectedItem;

您可以解析该值:

Status status = (Status)Enum.Parse(typeof(Status), "sad");

或(C#7):

Enum.TryParse<Status>("sad", true, out Status status);
// Or: Enum.TryParse<Status>("sad", true, out var status);
// Use "status variable" further

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM