0

コンボボックスで国の列挙型を使用しています。すべての列挙型はCountriesと呼ばれるクラスにあります。それらのいくつかには、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 に答える