2009-11-20 2 views
0

다음 예제에서는 양식의 ComboBox에 "APPLE"로 시작하는 맛을 추가하고 싶습니다. 열거 형에 고유 한 값이 있으면 잘 작동합니다. 그러나, 내 예제에서 두 열거 형 PINEAPPLE_PEACH 및 APPLE_ORANGE 모두 1의 값을 가지고 있으며이 결과를 엉망으로 만듭니다.일부 열거 형 값을 콤보 상자에 추가하는 방법

동일한 값을 가진 두 개의 열거 형을 사용하는 것이 잘못 되었습니까? 그렇다면 일관성있는 결과를 얻기 위해 어떻게 코드를 변경할 수 있습니까?

public enum Flavour 
    { 
     APPLE_PEACH = 0, 
     PINEAPPLE_PEACH = 1, 
     APPLE_ORANGE = 1, 
     APPLE_BANANA = 3, 
     PINEAPPLE_GRAPE = 4 
    } 

    private void AddFlavours() 
    { 
     foreach (Flavour flavour in Enum.GetValues(typeof(Flavour))) 
     { 
      string flavourName = Enum.GetName(typeof(Flavour), flavour); 
      if (flavourName.StartsWith("APPLE")) 
      { 
       myComboBox.Items.Add(flavour); 
      } 
     } 
    } 
+0

당신은 Konamiman 설명 반복을 사용할 수 있습니다. 하지만 어쨌든 왜 열거 형 값에 중복이 필요합니까? – terR0Q

+0

그것은 실제로 선택의 여지가 없어 써드 파티 라이브러리의 열거 형입니다 :). 위의 코드는 설명을위한 것입니다. – eft

+0

[enum 요소 중 일부를 제외한 comboBox 열거 형]의 가능한 복제본 (http://stackoverflow.com/questions/35047167/enum-to-combobox-except-some-of-enum-elements) – Eulogy

답변

0

GetValues ​​대신 Enum.GetNames을 사용할 수 있습니다. 그것은이 같은 (안 테스트) 다음과 같습니다

foreach (string flavourName in Enum.GetNames(typeof(Flavour))) 
{ 
    if (flavourName.StartsWith("APPLE")) 
    { 
     myComboBox.Items.Add(Enum.Parse(typeof(flavour), flavourName)); 
    } 
} 
+0

Flavor를 (으)로 변경해야합니다. 끈. –

1

Linq에로를, 당신은이를 사용할 수 있습니다 :

foreach (string flavourName in Enum.GetNames(typeof(Flavour)).Where(s => s.StartsWith("APPLE")))  
{ 
    myComboBox.Items.Add(flavourName); 
} 
관련 문제