3

In my project there is an UI which contains a combobox and the combobox will list some communication protocol, such as TCP/IP, FTP and so on

I want to use an enum to present the communication protocols, maybe like this:

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

so, how to bind the enum value to the text in combobox. For example, from the text selected in combobox I can easily know the corresponding enum value and vice versa. And I hope that will be easy to be extended in the future.

The text maybe not the same with the enum value, etc, TCP/IP vs TCPIP...

Thanks!

3 Answers 3

5

Well, either you make a function which translates the values into strings or you ToString the value:

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

You can use the name of the enum member to get a proper value with the parse member of Enum:

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

However, since the names of the members might not be suitable for display it's possible that you'll end up making a method that translates the names anyway.

Sign up to request clarification or add additional context in comments.

6 Comments

the prolbem is: the enum value is not the same with text, such as TCP/IP and TCPIP
Nice solution to use the ToString(), I was going to suggest the old C/C++ way of delaring an array of strings and using the enum as the index. I'm glad you replied before I did!
Hehe thanks. I've had to do this quite a lot of times myself. Carlos: if you can't use the names, you'll have to devise a way to translate "TCP/IP" into "TCP" or the reverse. It could be as simple as a method with a big switch-statement in it. You are not using WPF are you? There is a more elegant way if so.
You are not using WPF are you? ------------------ No :-(
Nothing wrong with a switch to output the correct name. It is there for a reason!
|
2

You should go with Enum.GetValues() method. Here is an example: How do you bind an Enum to a DropDownList control in ASP.NET?

Comments

2

This gets asked a lot. See the answers here.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.