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

标签 c# enums combobox

我有一个简单的枚举:

    public enum Status
    {
        sad,
        happy
    };

    protected Status status;

我已经成功地将它的值绑定(bind)到一个组合框:

        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’。

我试过像这样获取枚举名称(例如“悲伤”和“快乐”作为文本而不是它的值)(但我不确定如何封装它,也不确定它是否有效):

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

如果我能封装它,也许我就能解决我的问题。在这一点上我很困惑;我是新手。任何帮助的真诚感谢。希望这一切都有意义,并提供足够的信息。谢谢。

最佳答案

您可以解析回该值:

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

关于C# -- 封装 Enum,并从 ComboBox 中检索它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48007746/

相关文章:

sql - PostgreSQL - 检查值是否等于枚举值

typescript - 为什么 Typescript 不检查数值枚举?

c# - 为什么 XPath 表达式在 C# 中不返回任何结果,但在 C# 之外却返回任何结果?

java - 使用 wsgen 时是否可以保留枚举值?

c# - 为什么 makecert 不制作*有效*证书?

WPF - 如何重新设置组合框的样式以删除文本框/编辑框并替换为静态文本

c# - 使 ComboBox 只接受特定类型

wpf - 如果只有一项,如何隐藏组合框切换按钮?

c# - webservices 更改 ASMX Web 服务返回的命名空间前缀

c# - Entity Framework 中的 "Not In"