Enterキーで次のコントロールにフォーカスを移動するには?

文書番号 : 40890     文書種別 : 使用方法     登録日 : 2017/08/25     最終更新日 : 2017/08/25
文書を印刷する
対象製品
InputMan for Windows Forms 10.0J
詳細
InputMan for Windows Forms 10.0Jでは、ショートカットコンポーネントを用いることで簡単にフォーカス移動などの動作をコントロールに設定することができます。
具体的には、各コントロールごとにショートカットキーを設定する方法と、ショートカットコンポーネントのShortcutKeysプロパティに ショートカットキーを登録し、アプリケーション全体で使用されるショートカットキーを設定する方法があります。

■コントロールごとにショートカット機能を設定

  • デザイン画面で設定する方法
    1. デザイン画面でショートカットキーを設定したいコントロールをクリックし、プロパティウィンドウの 「gcShortcut1のShortcuts」項目をクリックします。表示されるダイアログボックスで以下の操作を行います。
    2. 「ショートカットキー:」ペインでショートカットキーとなるキーを指定します。「リストから選択」をチェックして「Return」を選択します。
    3. 「動作:」ペインで「NextControl」を選択します。
    4. ダイアログ中央にある「追加」ボタンをクリックします。「現在設定されているショートカットキー:」ペインにショートカットが追加されます。
    5. 現在の設定をフォーム上の同一クラスの他のコントロールにも適用するには、「同種のコントロールにも適用」 をチェックします。
    6. 〈OK〉ボタンをクリックします。

  • コードから設定する実装例

  • [Visual Basic]
    Private Sub Form1_Load( ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles MyBase.Load
        ' Enterキーで次コントロールにフォーカスを移動します。 
        GcShortcut1.GetShortcuts(GcTextBox1).Add(Keys.Enter, GcShortcut1, "NextControl")
    End Sub

    [C#]
    private void Form1_Load( object sender, EventArgs e )
    {
        // Enterキーで次コントロールにフォーカスを移動します。 
        gcShortcut1.GetShortcuts(gcTextBox1).Add(Keys.Enter, gcShortcut1, "NextControl");
    }

    ■アプリケーション全体にショートカット機能を設定

    ShortcutKeysプロパティに登録する方法では、ショートカットキーが押されると発生するShortcutKeyDownイベントをハンドルし、次のコントロールにフォーカスを移動するよう設定します。

    [Visual Basic]
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Enterキーによるショートカットキーを設定します。 
        GcShortcut1.ShortcutKeys.Add(Keys.Return)
    End Sub
    
    Private Sub GcShortcut1_ShortcutKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles GcShortcut1.ShortcutKeyDown
        ' フォームのアクティブ・非アクティブに関わらす発生するため、
        ' フォームがアクティブな状態のときだけフォーカスを移動します。 
        If Me Is Form.ActiveForm Then
            Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
            ' イベント処理を終了します。 
            e.Handled = True
        End If
    End Sub

    [C#]
    private void Form2_Load(object sender, EventArgs e)
    {
        // Enterキーによるショートカットキーを設定します。 
        gcShortcut1.ShortcutKeys.Add(Keys.Return);
    }
    
    private void gcShortcut1_ShortcutKeyDown(object sender, KeyEventArgs e)
    {
        // フォームのアクティブ・非アクティブに関わらす発生するため、
        // フォームがアクティブな状態のときだけフォーカスを移動します。 
        if (this == Form.ActiveForm)
        {
            this.SelectNextControl(this.ActiveControl, true, true, true, true);
            // イベント処理を終了します。 
            e.Handled = true;
        }
    }