如何将枚举值绑定到字符串?

3

在我的项目中,有一个包含下拉框的用户界面,该下拉框将列出一些通信协议,例如TCP/IP、FTP等。

我想使用枚举来表示通信协议,可能像这样:

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

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

文本可能与枚举值不同,例如TCP/IP与TCPIP等...

谢谢!

3个回答

5

好的,要么您可以编写一个将值转换为字符串的函数,要么您可以使用ToString函数将该值转换为字符串:

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

您可以使用枚举成员的名称,通过Enum类的parse方法获取其相应的值。该方法详情请查看Enum类parse方法
CommuProtocol prot = System.Enum.Parse(CommuProtocol, "FTP");

然而,由于成员名称可能不适合显示,您可能最终需要编写一个翻译名称的方法。


问题是:枚举值与文本不同,例如TCP/IP和TCPIP。 - Carlos Liu
使用 ToString() 的好方法,我原本打算建议使用旧的 C/C++ 字符串数组和使用枚举作为索引的方式。很高兴你在我之前回复了! - Tony
呵呵,谢谢。我自己也经常不得不这样做。Carlos:如果你不能使用名称,那么你必须想出一种将“TCP/IP”翻译成“TCP”或反之的方法。这可能只是一个带有大型switch语句的简单方法。你没有使用WPF吧?如果是这样,有更优雅的方式。 - Skurmedel
你没有使用WPF,对吗? 没有 :-( - Carlos Liu
1
正确输出名称的开关没有问题。这是有原因的! - Ed S.
实际上...可以将它们存储在一个小表中进行映射。最终的结果是相同的。 - Skurmedel

2

2

这个问题经常被问到。 在此处查看答案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接