我在comboBox中使用包含国家/地区的枚举。所有枚举都在一个名为Countries的类中。其中一些有像United_States_of_America这样的下划线。我需要在comboBox中显示之前删除那些下划线吗?
我的想法是使用Replace("_", " ")
,如果它是一个普通的字符串,那么简单,但使用组合框不是那么简单!因此,我会提前帮助解决这个问题吗?谢谢!
private void InitializeGUI()
{
// Fill comboBox with countries
cmbCountries.Items.AddRange(Enum.GetNames(typeof(Countries)));
}
答案 0 :(得分: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("_", " "));
}
}
答案 1 :(得分: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);
答案 2 :(得分:0)
Enum.GetNames(typeof(Countries)).Select(x => x.Replace("_", " "));