2012-05-04 10 views
0

私はcomboBoxの国で列挙型を使用しています。すべての列挙型は、国と呼ばれるクラスにあります。その中にはUnited_States_of_Americaのようなアンダースコアがあります。コンボボックスに表示される前にアンダースコアを削除する必要がありますか?列挙型のリストからアンダースコアを削除しますか?

普通の文字列であれば私の考えはReplace("_", " ")でしたが、コンボボックスではそれほど単純ではありませんでした!したがって、私はこれを解決するためにいくつかの助けをpreciateだろうか?ありがとう!

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

Hmmm、私はクラスで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("_", " ")); 
関連する問題