2012-10-29 3 views
3

내 요구 사항에 맞게 C# DateTimePicker (nullable)을 다시 작성하지만 픽업 시간에서 업 이벤트를 감지하는 데 막혔습니다. (HH:mm, DateTimePicker.ShowUpDown = true).C# - DateTimePicker, 업다운 클릭 이벤트 감지

위 또는 아래 버튼을 눌렀을 때 OnValueChanged이 (가) 발생했지만 이미 처리 중입니다 (숫자가 DateTimePicker에 입력되면 자동으로 다음 필드로 이동). 버튼을 누르면 ValueChanged 이벤트를 차단하고 다른 기능으로 처리해야합니다.

WndProc 함수를 재정의하려는 중 있지만 OnValueChanged WndProc 전에 호출됩니다. OnKeyDown은 OnValueChanged 다음에 호출됩니다.

아이디어가 있으십니까?

답변

0

드롭 다운 캘린더가 요청 될 때마다 발생하는 OnDropDown을 무시할 수 있습니다.

+0

언급 한대로 캘린더 대신 ShowUpDown을 사용하고 있습니다. – user1782815

0

DateTimePicker 값이 변경되면 ValueChanged 이벤트를 차단하면 안됩니다. 그리고 Up Down 버튼은 DateTimePicker 값을 변경하는 데 사용되므로 ValueChanged 이벤트를 발생시켜야합니다.

이 이벤트의 현재 처리를 변경하는 것을 고려하십시오.

BTW 값이 변경되면 다음 필드로 이동하는 이유는 무엇입니까? 적절한 TabIndex 값을 컨트롤에 할당하고 사용자가 Tab 버튼을 사용하여 다음 필드로 이동하도록 허용하십시오. 이는 일반적인 탐색 방법입니다.

+0

dd.MM.yyyy와 HH : mm을 사용하여 제어해야합니다. 시간을 입력 한 후 컨트롤을 MM 부분으로 옮기십시오. TabIndex는 내가 알고있는 것처럼 DateTimePicker 안의 컨트롤이 아닙니다. – user1782815

+0

@ user1782815 inside DateTimePicker 왼쪽 및 오른쪽 화살표 키는 탐색에 사용됩니다. –

+0

예, 알고 있지만 사용자가 날짜 또는 시간의 한 부분을 입력 한 후 화살표 탐색을 사용할 필요가 없습니다. 이 기능은 필요하지 않으므로 (사용자가 컨트롤 안에 화살표 키를 사용할 수 있으므로) 윗쪽 위 버튼 위에 패널을 배치하여이 문제를 해결했습니다. – user1782815