2010-01-14 50 views
3

在我的項目有它包含一個組合框和組合框會列出一些通信協議的UI,如TCP/IP,FTP等如何綁定枚舉值轉換爲字符串

我想用一個枚舉以呈現通信協議,可能是這樣的:

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

所以,如何將枚舉值綁定到組合框中的文本。例如,從組合框中選擇的文本中,我可以很容易地知道相應的枚舉值,反之亦然。我希望將來可以輕鬆擴展。

的文字也許不會與枚舉值,等等,TCP/IP VS TCPIP一樣...

謝謝!

回答

4

嘛,要麼你做它轉換的值轉換爲字符串的函數,或者你ToString值:

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

可以使用枚舉成員的名義獲得與parse member of Enum一個適當的值:

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

但是,由於成員的名稱可能不適合顯示,因此您最終可能會創建一個翻譯名稱的方法。

+0

prolbem是:enum的值與文本不一樣,比如TCP/IP和TCPIP – 2010-01-14 09:01:09

+0

使用ToString()的很好的解決方案,我會建議老式的C/C++方式對數組進行delaring字符串並使用枚舉作爲索引。我很高興你在我做之前回復了! – Tony 2010-01-14 09:01:12

+0

赫赫謝謝。我必須自己做很多次。 Carlos:如果你不能使用這些名字,你必須設法將「TCP/IP」翻譯成「TCP」或相反。它可以像使用大開關語句的方法一樣簡單。你沒有使用WPF嗎?如果是這樣,還有一種更優雅的方式。 – Skurmedel 2010-01-14 09:06:55

2

這會被問到很多。查看答案here