2012-05-04 20 views
0

我在comboBox中使用國家的枚舉。所有枚舉都在一個名爲Countries的類中。其中一些有如United_States_of_America的下劃線。我需要在comboBox中顯示之前刪除這些下劃線?從枚舉列表中刪除下劃線?

我的想法是使用Replace("_", " "),簡單如果它是一個普通的字符串,但沒有這麼簡單的組合框!因此,我會提供一些幫助來解決這個問題?謝謝!

private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))); 
} 

回答

4

使用LINQ的力量:)

private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries)) 
            .Select(c => c.Replace("_", " ")); 
} 

或者使用foreach:

private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    string[] countryNames = Enum.GetNames(typeof(Countries)); 
    foreach (string countryName in countryNames) 
    { 
     cmbCountries.Items.Add(countryName.Replace("_", " ")); 
    } 
} 
+0

+1。最好是「打破」長線,所以煩人的滾動條不會在這裏。希望你沒有生氣,如果你願意,你可以回滾。 – gdoron

+0

嗯,我沒有和我班的LINQ一起工作,我們有望在下一堂課中使用它。它能以其他方式完成嗎?多一點基本? –

+0

@ 3D-kreativ。 'foreach' – gdoron

0
private void InitializeGUI() 
{ 
    // Fill comboBox with countries 
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries)) 
     .Select(c => c.Replace("_", " "))); 
} 

這將創建一個IEnumerable<string>,包含您從Enum選擇的名字(幹得好,與Enum一起工作總是對我來說似乎非常可怕),然後替換t他強調每個名字。

你也可以這樣寫:

countryNames = from country 
       in Enum.GetNames(typeof(Countries)) 
       select country.Replace("_", " "); 
cmbCountries.Items.AddRange(countryNames); 
0
Enum.GetNames(typeof(Countries)).Select(x => x.Replace("_", " "));