2015-01-08 2 views
-4

나는 텍스트 상자에 속성을 사용하여 하나 개의 코드를 작성하고 난이설정 플래그 변수는

public string Color 
{ 
get{}; 
set 
    { 
    SetColor(value); 
    } 
} 

private void SetColor(string level) 
{ 
    switch(level.ToLower()) 
    { 
    case "high": 
    textbox1.BackColor = System.Drawing.Color.Red; 
    break; 

    case "medium": 
    textbox1.BackColor = System.Drawing.Color.Green; 
    break; 

    case "low": 
    textbox1.BackColor = System.Drawing.Color.Yellow; 
    break; 
    } 
} 

같은 일부 값을 설정하고하지만 내 주요 목표는 플래그 만약 내가, 플래그를 설정할 필요가있다 High이면 빨간색 글꼴로 표시되어야하며 마찬가지로 플래그가 중간이면 레이블에 노란색 글꼴이 표시되어야합니다.

public static class EnumExtensions 
{ 
    private static void CheckIsEnum<T>(bool withFlags) 
    { 
      CheckIsEnum(T) (True); 
    } 
} 

public static bool IsFlagSet<T>(this T value, T flag) 
{ 
} 

플래그 변수를 설정하는 동안 파이프 기호를 사용해야합니까? 나는 그물에서 서핑을하고 있었지만, 내가 예상하지 못했던 해답을 얻었습니다. 하나의 플래그 Boolean true 또는 false. 플래그가 true이면 색상 글꼴을 사용 가능하게 설정해야합니다. 또한 데이터베이스에서 데이터를 가져와야 할 때 도와주세요. 가능하고 특정 값이 높음, 낮음 또는 중간 위험인지 여부를 확인하고 적절하게 글꼴을 표시 할 수 있습니까?

위의 코드를 enum을 사용하여 플래그에 포함하는 방법에 대해 조언 해 줄 수 있습니까?

+1

코드 형식을 지정하십시오. – qamar

답변

0
  • 당신은 또는 설명 속성없이 열거를 정의 할 수 있습니다,하지만 내 코드가 모두 작동합니다 ("당신의 열거 값이 여러 단어로 구성되어있는 경우에는 설명 속성을 사용할 수 있습니다 그리고 당신은 같은 공백으로 표시해야

public enum AlertType 
{ 
    [Description("High")] 
    High, 

    [Description("Medium")] 
    Medium, 

    [Description("Low")] 
    Low 
} 
지금과 같은 몇 가지 헬퍼 메소드를 사용하여 공백 "매우 높음"당신이로 보여하지만, 값으로 "VeryHigh.)이 헬퍼 클래스에 무엇을, 당신은 문자열 값을 사용하여 열거 값을 얻을 수 있습니다 값/설명을 나타낼 수 있습니다. 귀하의 질문에 대한 지금
public static class EnumUtils 
    { 
     public static string StringValueOf(Enum value) 
     { 
      var fi = value.GetType().GetField(value.ToString()); 
      var attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); 
      if (attributes.Length > 0) 
      { 
       return attributes[0].Description; 
      } 
      return value.ToString(); 
     } 


     public static T EnumValueOf<T>(string enumStr) 
     { 
      string[] names = Enum.GetNames(typeof(T)); 
      foreach (var name in names) 
      { 
       var enumVal = (Enum) Enum.Parse(typeof (T), name); 
       if (string.Compare(StringValueOf(enumVal), enumStr, StringComparison.OrdinalIgnoreCase) == 0) 
       { 
        return (T)Enum.Parse(typeof(T), name); 
       } 
      } 

      throw new ArgumentException("The string is not a description or value of the specified enum."); 
     } 
    } 
  • : 플래그 변수를 설정하는 동안

나는 파이프 기호를 사용해야합니까?

아니, 당신은 예를 들어 당신이 경고가 같은 시간에 높음으로 설정하고 낮은 것을 말할 수 있도록, 당신의 열거에서 하나 개 이상의 값을 결합 할 수 있기 때문에 것을 필요로하지 않습니다. [플래그]는 열거 형 값을 결합 할 수있는 경우 유용합니다 (this 참조). 나는 데이터베이스에서 데이터를 얻을 필요에

또한 저를 도와주세요. 가능하고 특정 값이 높거나 낮음 또는 보통 위험을 지니고 그에 따라 글꼴을 표시하는지 확인하십시오.

이 경우에, 당신은 열거 값을 열거 문자열을 변환하는 도우미 방법을 사용할 수 있습니다. 이 도움이

// your mappings go here. 
private Dictionary<AlertType, Color> _alertColorMappings = new Dictionary<AlertType, Color>() 
{ 
    {AlertType.High, Color.Red}, 
    {AlertType.Medium, Color.Green}, 
    {AlertType.Low, Color.Yellow}, 
}; 

// Alert property which can be set through a mapping with a combobox 
private AlertType _alert; 
public AlertType Alert 
{ 
    get 
    { 
     return _alert; 
    } 
    set 
    { 
     if (_alert != value) 
     { 
      _alert = value; 
      textbox1.BackColor = _alertColorMappings[value]; 
     } 
    } 
} 

희망 : 코드는 다음과 같이 될 수 있도록, 또한을 alertType과 색 사이의 매핑이 필요한 것처럼

편집

보인다.

+0

Alani 저는 다양한 ForeColors를 system.drawings.colors와 같이 정의해야합니다. 빨강, 노랑, 초록색에 대해서. 여기서 내가 달성 할 수있는 것은 –

+0

이 것에 대한 약간의 세부 사항을 제공 할 수 있습니까? AlertType과 ForeColor 사이의 매핑이 필요합니까? 또는 다른 어떤 것, 만약 당신이 매핑 후에 사전으로 충분할 것입니다. ? –

+0

플래그 변수를 설정해야합니다. 예를 들어 나는 12345 위험이 높은 다음 빨간색 빨간색 글꼴을 활성화해야합니다. 제발 도와주세요 –