관리 메뉴

KorSA

C# Winform DropDownList의 SelectedIndex 이벤트 관리 (Telerik 사용) 본문

Development Experience/C#

C# Winform DropDownList의 SelectedIndex 이벤트 관리 (Telerik 사용)

Praiv. 2020. 11. 30. 18:27
320x100

C# Winform을 사용한 프로젝트에서 DropDownList의 SelectedIndex 이벤트를 상황에 맞게 조절해야 할 필요성이 있었다. 사용자가 DropDownList 에서 현재 선택된 아이템이 아닌 다른 아이템을 선택할 경우, 기존 데이터가 지워진다는 메시지 팝업을 띄워주어야 했다.

 

처음엔 기존에 사용하던 SelectedIndexChanged 이벤트 핸들러에서 이 메시지 팝업을 띄워주려 했다.

하지만 여기서 팝업을 띄우다보니, 사용자가 기존 데이터를 지우고 싶어하지 않는 경우에도 DropDownList의 Index가 바뀌어 버리는 것이었다. SelectedIndex 이벤트가 실행되는 걸 멈추기 위해 argument로 받은 이벤트 변수 e 의 e.Cancel을 true로 하고자 했으나 Cancel 속성이 e 변수 안에 존재하지 않았다.

 

알고보니 SelectedIndexChanged 핸들러의 이벤트 변수가 아니라 SelectedIndexChanging 핸들러의 이벤트 변수 e에 Cancel 속성이 있던 것이었다.

 

주의 !! SelectedIndexChainging은 기본 C# Winforms에서 제공하는 이벤트가 아니고, 내가 사용하는 상용 제품인 Telerik에서 제공해주는 이벤트이다.

 

SelectedIndexChanging 이벤트는 SelectedIndex가 진행중일 때 호출되는 이벤트이기 때문에 이벤트의 호출을 중간에 멈출 수 있지만, SelectedIndexChanged 이벤트는 이미 이벤트 처리 과정이 끝난 다음에 호출되기 때문이 아닐까 싶다.

 

그래서 SelectedIndex 이벤트의 중간 동작을 조작할 때에는 SelectedIndexChanging을 써야 한다. 내가 띄우고자 하는 메시지 팝업도 SelectedIndexChanging 이벤트 핸들러에서 호출하였다.

728x90
728x90
Comments