0

我在组合框中使用国家/地区的枚举。所有枚举都在一个名为 Country 的类中。其中一些带有下划线,例如 United_States_of_America。在组合框中显示之前,我需要删除这些下划线吗?

我的想法是使用Replace("_", " "),如果它是一个普通的字符串,那么简单,但使用组合框就不那么简单了!因此,我会寻求一些帮助来解决这个问题?谢谢!

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

3 回答 3

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("_", " "));
    }
} 
于 2012-05-04T08:05:47.833 回答
0
private void InitializeGUI()
{
    // Fill comboBox with countries
    cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries))
        .Select(c => c.Replace("_", " "))); 
}

这将创建一个IEnumerable<string>, 包含您从中选择的名称Enum(做得好,与Enum我一起工作总是很可怕),然后替换每个名称的下划线。

你也可以这样写:

countryNames = from country
               in Enum.GetNames(typeof(Countries))
               select country.Replace("_", " ");
cmbCountries.Items.AddRange(countryNames);
于 2012-05-04T08:06:21.920 回答
0
Enum.GetNames(typeof(Countries)).Select(x => x.Replace("_", " "));
于 2012-05-04T08:07:51.847 回答