-
String Type Enum 변수 Combo box처리Software/C# 2024. 5. 23. 14:40728x90
Enum을 사용해 변수를 다루다 보면 String Type 자체를 값으로 활용하고 싶을 때가 있다.
Enum 자체는 String을 변수로 지원하지 않기 때문에 값을 자체적으로 저장하는 것은 불가능하지만, .Net에서 제공하는 이 기능을 활용하면 String 변수를 Enum 내부에서 자유자재로 사용할 수 있다.
Sytem.ComponentModel.DescriptionAttribute
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