Windows Forms에서 마법사 프레임 워크를 작성하려고합니다. 나는이 사이트와 다른 사이트에서 유용한 팁을 많이 수집하여 성공에 매우 가깝게 만들었습니다. 그러나 마법사의 첫 번째 페이지 이외의 다른 탭 페이지에서 ErrorProvider를 표시하는 데 문제가 있습니다.Windows Forms 오류 공급자가 사용자 지정 탭 컨트롤에 표시되지 않는다
내 마법사 컨트롤은 UserControl입니다. 여기에는 TabControl에서 파생 된 사용자 지정 탭 컨트롤이 포함되어 있으므로 컨트롤의 맨 아래에있는 뒤로/다음/마침/취소 단추의 일반적인 컬렉션과 함께 탭을 숨기고 키 누르기를 사용하여 탭 사이를 탐색하려는 시도를 무시할 수 있습니다.
다음 단추를 눌렀을 때 마법사 컨트롤에 속한 특정 TabPage에서 유효성 검사 이벤트를 발생시킬 수 있도록 리플렉션을 사용했습니다. (난 전체 TabControl, 현재 활성화 된 페이지의 유효성을 확인하고 싶지 않아요.) 내가 이렇게하면 디버거에서 현재 탭 페이지에서 컨트롤에 대한 내 유효성 검사 루틴이 올바르게 호출되고 볼 유효한 오류 메시지와 함께 특정 컨트롤 (이 경우 TextBox)에 첨부 된 ErrorProvider를 호출했습니다. 유효화 루틴의 CancelEventArgs에 대해 Cancel을 true로 설정하면 반사 메커니즘을 사용하는 코드에 의해 선택되어 실패하고 탭을 변경하지 않는다는 것을 알 수 있습니다. 그리고 검증에 실패한 컨트롤에 포커스를 성공적으로 설정했습니다.
이렇게 모두 잘 작동하는 것처럼 보입니다.
불행히도, 내가 하지 마십시오 첫 번째 탭 페이지에 있지 않으면 ErrorProvider의 명랑한 깜박임 아이콘을 참조하십시오. 다른 모든 탭 페이지에는 메시지가 전혀 표시되지 않습니다.
나는 당황하고 있습니다. 이견있는 사람? 도움이된다면 코드 스 니펫을 제공 할 수 있습니다.
감사합니다.