【问题标题】:how to bind enum values to strings如何将枚举值绑定到字符串
【发布时间】:2010-01-14 08:51:39
【问题描述】:

在我的项目中有一个包含组合框的 UI,组合框会列出一些通信协议,例如 TCP/IP、FTP 等

我想用一个枚举来表示通信协议,可能是这样的:

public enum CommuProtocol 
{
   TCPIP = 0,
   FTP,
   MPI,
   Other
}

那么,如何将枚举值绑定到组合框中的文本。例如,从组合框中选择的文本中,我可以很容易地知道相应的枚举值,反之亦然。我希望将来可以轻松扩展。

文本可能与枚举值不一样,等等,TCP/IP vs TCPIP...

谢谢!

【问题讨论】:

    标签: c#


    【解决方案1】:

    好吧,要么你创建一个将值转换为字符串的函数,要么你 ToString 值:

    CommuProtocol prot = CommuProtocol.FTP;
    string name = prot.ToString();
    

    您可以使用枚举成员的名称通过parse member of Enum 获取正确的值:

    CommuProtocol prot = System.Enum.Parse(CommuProtocol, "FTP");
    

    但是,由于成员的名称可能不适合显示,因此您最终可能会创建一个翻译名称的方法。

    【讨论】:

    • 问题是:枚举值与文本不一样,如TCP/IP和TCPIP
    • 使用 ToString() 的好解决方案,我将建议使用旧的 C/C++ 方法来定义字符串数组并使用枚举作为索引。很高兴你在我之前回复了!
    • 呵呵谢谢。我自己不得不这样做很多次。 Carlos:如果您不能使用这些名称,您将不得不设计一种方法将“TCP/IP”翻译成“TCP”或反之。它可以像一个带有大开关语句的方法一样简单。你没有使用WPF是吗?如果是这样,还有一种更优雅的方式。
    • 你没有使用 WPF 是吗? ------------------ 没有:-(
    • 输出正确名称的开关没有问题。这是有原因的!
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      这被问了很多。查看答案here。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-09
        • 2018-06-09
        • 2012-01-25
        • 1970-01-01
        • 2013-10-02
        • 2010-09-28
        • 1970-01-01
        相关资源
        最近更新 更多