2012-08-27 3 views
0

C# 프로젝트에서 WinForms 양식을 구현 중입니다.
내 양식이 MDI 양식의 하위 항목입니다.
내 양식에 사용자 정의 컨트롤이 있습니다.
내 사용자 정의 컨트롤에는 유효성 검사 단추와 취소 단추가 포함 된 일부 단추가 포함되어 있습니다.키 누름 이벤트 처리 + WinForms + 유효성 검사 + 취소

  • 내 양식이 활성화되고 사용자가 입력 한 키를 누르면 그때가 확인 버튼을 클릭 이벤트가 자동으로 해고 할 :

    나는 다음과 같은 로직을 구현하고자합니다.

  • 내 양식이 활성화되어 있고 사용자가 이스케이프 키를 누르면 취소 버튼 클릭 이벤트가 자동으로 실행되기를 원합니다.

유효성 검사 및 취소 단추가 사용자 정의 컨트롤에 포함되어 있지 않은 경우 아마도 AcceptButton 및 CancelButton 속성을 내 양식에 설정합니다.

+0

: 여기 – Arthur

답변

2

은 내 첫 번째 게시물에 코멘트에 아서에 의해 주어진 팁에 따라 내 사용자 컨트롤의 Load 이벤트 처리기에서 작성한 코드입니다 FindForm()을 사용하여 부모 폼을 만들고 AcceptButton 및 CancelButton 속성을 설정합니다.
1
  1. 등록 정보에서 true의 KeyPreview 속성을 true로 설정하십시오.

  2. , 당신의 양식 당신의 양식의 keyDownEvent에서

  3. 에 keyDownEvent 추가 코드

코드

if(e.KeyValue==13)// When Enter Key is Pressed 
{ 
    // Last line is performing click. Other lines are making sure 
    // that user is not writing in a Text box 
     Control ct = userControl1 as Control; 
     ContainerControl cc = ct as ContainerControl; 
     if (!(cc.ActiveControl is TextBox)) 
      validationButton.PerformClick(); // Code line to performClick 
} 

if(e.KeyValue==27) // When Escape Key is Pressed 
{ 
    // Last line is performing click. Other lines are making sure 
    // that user is not writing in a Text box 
     Control ct = userControl1 as Control; 
     ContainerControl cc = ct as ContainerControl; 
     if (!(cc.ActiveControl is TextBox)) 
      cancelButton.PerformClick(); // Code line to performClick 
} 
의 다음 줄을 포함

validationButton 또는 취소 버튼이의 이름입니다 당신의 내가 방금 가정하고있는 버튼. 당신은 다른 것들을 가질 수 있습니다. 이 두 가지가 아닌 다른 이름을 사용하십시오. 당신이 얻을 수있는 컨트롤의의 OnLoad에

// Get the container form. 
form = this.FindForm(); 

// Simulate a click on the validation button 
// when the ENTER key is pressed from the container form. 
form.AcceptButton = this.cmdValider; 

// Simulate a click on the cancel button 
// when the ESC key is pressed from the container form. 
form.CancelButton = this.cmdAnnulerEffacer; 
+0

지침을 구현하는 데 문제가 있으면 업데이트해야합니다. – Sami

+0

나는 내 게시물에 대한 언급에서 Arthur가 준 팁을 따라 갔다. 나는 한 가지 이유 때문에 당신의 팁을 따라 가지 않았습니다. 사용자가 TextBox에 입력 한 다음 Enter 키를 누르면 validationButton.PerformClick을 호출하지 않는 테스트를 수행해야합니다. – user1139666

+0

확인. 죄송합니다. 문제 설명에서 언급 한 사례를 얻을 수 없습니다. 문제가 해결 되었습니까? – Sami