2024년 11월 26일 화요일

C# 윈폼 콤보박스 처리 (feat. GUI 의존)

C# 으로 웹서비스 말고 GUI프로그래밍 같은걸 할때는 윈폼,WPF, 마우이 등을 이용한다.
주력은 아무래도 윈폼,WPF로 많이 함.  윈폼은 죽을때가 됐는데 아직까지 사용자층이 
두터워서 닷넷 스탠다스에서 꿋꿋이 살아 남았음..  -_-;;

암튼 윈폼으로 작업을 하다보면 기본 UI가 안이쁨.. 그래서 이것을 카바칠라고 
누겟에서 GUI 관련 라이브러리를 받아다가.. 그걸로 도배해 버리면 그 당시에는
좋을런지 모르겠지만.. 나중에 마이그레이션 이슈를 격게된다..  그래서 이렇게 몇번
데이고 나면 다시 근본으로 돌아오게 되는데.. 나는 이걸 뼈저리게 느낀적이 많이 있어서  
다른 라이브러리에는 의존을 많이 하지만 GUI만큼은 고생스럽더라도 사용자정의 컴퍼넌트
같은것을 시간을 투자해서 만들어서 그걸 사용한다.  이렇게 만들고 나면 나중에 재사용가능성
이 있는 유저컨트롤이 되니까 시간이 흐를수록 UI의 빌드가 쉬워진다.
그리고 기본 컴퍼넌트와도 잘 어울릴수 있도록 그려내야 한다.


암튼.  윈폼에서 콤보박스처리 방법

- 컴퍼넌트에서 dropdownstyle을 dropdownlist로 변경함 (안하면 클릭하면 Edit모드됨)
- 자료바인딩 처리는 다음처럼

// 먼저 바인딩할 자료를 열거형으로 가져오고 - ex. combolist
combobox.DisplayMember = "Display";
combobox.ValueMemver = "Value";
// 이렇게 Display와 Value필드를 가진 dynamic으로 item 바인딩
foreach (var obj in combolist)
{
    combobox.Items.Add(new { Display = obj.ToString(),  Value = obj });
}
//처음으로 이동처리
combobox.SelectedIndex = 0;


- 그다음 선택한 콤보 아이템를 사용할때는 (User클래스를 바인딩했다.. 치고)
User usr = (combobox.SelectedItem as dynamic).Value;
- 글자는 
string str = (combobox.SelectedItem as dynamic).Display;


요로코롬 사용하면됨..   ㅇㅇ



댓글 없음:

댓글 쓰기