C# で矢印キーと Enter キーを使用してコントロール フォーカスを切り替える 2 つの方法

零下一度
リリース: 2017-06-23 16:24:45
オリジナル
2905 人が閲覧しました

環境: インターフェイスには 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 }
ログイン後にコピー

この時点で、コントロールのフォーカスを切り替える機能が実装されました。ここで、2 つの ComboBox コントロール cmbMeas が必要になります。フォームインターフェイスの cmbRemark は、フォーカスを切り替えるのではなく、Enter キーを押したときに送信されるようにしたいのですが、どうすればよいですか?次に、現在フォーカスがあるコントロールが cmbMeas か cmbRemark かを判断する必要があります。具体的なコードは次のとおりです。

Control.FromHandle メソッド

が戻ります。指定されたハンドル Control に関連付けられた現在のコントロール。指定されたハンドルを持つコントロールが見つからない場合は、null 参照が返されます。

Control.FromChildHandle メソッド

複数のハンドルを持つコントロールを返す必要がある場合は、

FromChildHandle

メソッドを使用する必要があります。

このメソッドは、コントロールに関連付けられたハンドルが見つかるまで、ウィンドウ ハンドルの親チェーンを検索します。このメソッドは、複数のハンドルを持つコントロールを正しく返すため、FromHandle メソッドよりも信頼性が高くなります。

ユーザー定義コントロールの場合は、FromChildHandle メソッドを使用する必要があります。

以上がC# で矢印キーと Enter キーを使用してコントロール フォーカスを切り替える 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!