ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • String Type Enum 변수 Combo box처리
    Software/C# 2024. 5. 23. 14:40
    728x90

    Enum을 사용해 변수를 다루다 보면 String Type 자체를 값으로 활용하고 싶을 때가 있다.

    Enum 자체는 String을 변수로 지원하지 않기 때문에 값을 자체적으로 저장하는 것은 불가능하지만, .Net에서 제공하는 이 기능을 활용하면 String 변수를 Enum 내부에서 자유자재로 사용할 수 있다.

     

     

    Sytem.ComponentModel.DescriptionAttribute

    Desciption 변수 선언

    Description 변수로 문자열을 Enum에 저장하면 해당 값을 문자열 값으로 꺼내어 쓸 수 있다.

     

     

     

     

     <T> type generic Interface for Enum string value
    public static class EnumHelper
    {
        // Enum 내부 Description string 변환용 인터페이스
        public static string GetDescription<T>(T e) where T : Enum
        {
            var type = e.GetType();
            var memberInfos = type.GetMember(e.ToString());
            if (memberInfos.Length <= 0) return e.ToString();
            var attrs = memberInfos[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
            return attrs.Length > 0 ? ((System.ComponentModel.DescriptionAttribute)attrs[0]).Description : e.ToString();
        }
    }

     Description을 사용하려면 Attribute 메소드를 사용하여 밀어주는 작업이 필요하다. 이를 편하게 사용하기 위해 <T> type의 인터페이스를 구성하였다.

     

     

     

     

    Combo Box 실제 구현부
     foreach ( Enum item in Enum.GetValues(typeof(FrameOptions.ACCUBITstatus)))
     {
         string[] subtem = new string[] { EnumHelper.GetDescription(item), "NORMAL", "●" };
         var listViewItem = new ListViewItem(subtem);
         listViewItem.UseItemStyleForSubItems = false;
         ACCUBIT.Items.Add(listViewItem);
     }

    Combo Box Add 코드

     

     

     

    728x90

    'Software > C#' 카테고리의 다른 글

    C# Form Textbox 변수 값 입력 이벤트  (0) 2024.05.23
    C# Form UI 접근과 Invoke  (0) 2024.05.23
    Form 공용 기능을 위한 BaseForm  (0) 2024.05.23
    C# Form 자식 폼 붙이기  (0) 2024.05.23
    C# Form 해상도 변화 맞춤형 UI 제작  (0) 2024.05.23