>백엔드 개발 >C#.Net 튜토리얼 >C#에서 화살표 키와 Enter 키를 사용하여 제어 포커스를 전환하는 두 가지 방법

C#에서 화살표 키와 Enter 키를 사용하여 제어 포커스를 전환하는 두 가지 방법

零下一度
零下一度원래의
2017-06-23 16:24:453043검색

환경: 인터페이스에는 TextBox, ComboBox 및 기타 컨트롤이 있습니다.

포커스를 전환하기 위해 왼쪽 및 오른쪽 화살표 키를 모두 사용하는 것은 권장되지 않습니다. 그렇지 않으면 TextBox에서 커서의 문자 위치를 변경하는 것이 불편할 것입니다.

방법 1: 어리석은 방법, 각 컨트롤에 대해 별도로 이벤트 처리를 등록해야 함

TextBox를 예로 들어, 코드는 다음과 같습니다.

 1 private void textbox_KeyDown(object sender, KeyEventArgs e)         
 2 {             
 3     if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Enter)             
 4     {                 
 5         e.SuppressKeyPress = true;                 
 6         System.Windows.Forms.SendKeys.Send("{Tab}");             
 7     }             
 8     else if (e.KeyCode == Keys.Up)             
 9     {                 
10         e.SuppressKeyPress = true;                 
11         System.Windows.Forms.SendKeys.Send("+{Tab}");             
12     }         
13 }

방법 2: 간단한 방법, 등록할 필요 없음 각 컨트롤에 대해 별도로 이벤트를 처리하려면 양식 클래스에 다음 코드를 추가하기만 하면 됩니다.

 1 //上、下方向键,及回车键切换控件焦点 2 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 3 { 4     Keys key = (keyData & Keys.KeyCode); 5     if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Enter)             
 6     {                                  
 7       System.Windows.Forms.SendKeys.Send("{Tab}"); 
 8       return true;            
 9     }             
10     else if (e.KeyCode == Keys.Up)             
11     {                                  
12       System.Windows.Forms.SendKeys.Send("+{Tab}");13       return true;             
14     }   
15     return base.ProcessCmdKey(ref msg, keyData);16 }

이 시점에서 컨트롤 포커스 전환 기능이 구현되었습니다. 이제 두 개의 ComboBox 컨트롤 cmbMeas가 있습니다. 및 양식 인터페이스의 cmbRemark. 포커스를 전환하는 대신 Enter를 눌렀을 때 이 두 컨트롤이 제출되기를 바랍니다. 어떻게 해야 합니까? 그런 다음 현재 포커스가 있는 컨트롤이 cmbMeas인지 cmbRemark인지 확인해야 합니다. 구체적인 코드는 다음과 같습니다.

Control.FromHandle 메서드

가 반환됩니다. 지정된 핸들과 연관된 현재 컨트롤 Control; 지정된 핸들이 있는 컨트롤이 없으면 null 참조가 반환됩니다.

Control.FromChildHandle 메서드

여러 핸들이 있는 컨트롤을 반환해야 하는 경우

FromChildHandle

메서드를 사용해야 합니다.

이 메서드는 컨트롤과 연결된 핸들을 찾을 때까지 창 핸들 상위 체인을 검색합니다. 이 메서드는 여러 핸들이 있는 컨트롤을 올바르게 반환하므로 FromHandle 메서드보다 더 안정적입니다.

사용자 정의 컨트롤의 경우 FromChildHandle 메서드를 사용해야 합니다.

위 내용은 C#에서 화살표 키와 Enter 키를 사용하여 제어 포커스를 전환하는 두 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.