2

タブ キーとまったく同じ方法でフォーム上のコントロールを簡単に移動する方法はありますか? これには、datagridview 上のセルの移動などが含まれます。

4

3 に答える 3

2

winforms を使用して、Form KeyPreview プロパティを true に設定する必要があります

そして、フォームのキープレスイベントで

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 13)
       GetNextControl(ActiveControl, true).Focus();
}
于 2008-12-08T01:52:32.100 に答える
2

datagridview ハンドルは、セル間を移動するための独自のタブ イベントであるため、カスタム データグリッド コントロールを作成し、次のように onKeyUp イベントをオーバーライドする必要があります。

Public Class MyCustomDataGrid
    Inherits DataGridView

    Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.Enter Then
            e.Handled = True
            Me.ProcessTabKey(Keys.Tab)
        Else
            MyBase.OnKeyUp(e)
        End If
    End Sub
End Class

これにより、データグリッドセルをタブで移動しようとすると、Enter キーがタブキーとして処理されます。フォームでもタブを処理する必要がある場合は、Marioh が言ったことを少し変更する必要があります。

Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.Enter AndAlso Not ActiveControl.GetType() Is GetType(Class1) Then
            e.Handled = True
            Me.ProcessTabKey(Not e.Shift)
        Else
            MyBase.OnKeyUp(e)
        End If
    End Sub

アクティブなコントロールのタイプのチェックを追加するだけで済みます。そうしないと、フォームがカスタム データグリッド タブ コードの動作を停止します。

于 2008-12-08T02:11:08.787 に答える