次の方法で共有


DataGridView.ProcessDataGridViewKey(KeyEventArgs) メソッド

定義

DataGridView での移動に使用されるキーを処理します。

protected:
 virtual bool ProcessDataGridViewKey(System::Windows::Forms::KeyEventArgs ^ e);
protected virtual bool ProcessDataGridViewKey (System.Windows.Forms.KeyEventArgs e);
abstract member ProcessDataGridViewKey : System.Windows.Forms.KeyEventArgs -> bool
override this.ProcessDataGridViewKey : System.Windows.Forms.KeyEventArgs -> bool
Protected Overridable Function ProcessDataGridViewKey (e As KeyEventArgs) As Boolean

パラメーター

e
KeyEventArgs

押されたキーに関する情報を格納します。

戻り値

キーが処理された場合は true。それ以外の場合は false

例外

キーを押すとコントロールが編集モードに切り替わる可能性がありますが、現在のセルの EditType プロパティは、Control から派生して IDataGridViewEditingControl を実装するクラスを示しません。

この操作を行うと、本来はセル値がコミットされるか、または編集モードに切り替わるところですが、データ ソースのエラーのためにその操作は実行できず、DataError イベントのハンドラーがない状態か、ハンドラーが ThrowException プロパティを true に設定している状態になります。

- または -

DELETE キーにより 1 つ以上の行が削除されますが、データ ソースのエラーによって削除ができなくなり、DataError イベントのハンドラーがないか、またはハンドラーが ThrowException プロパティを true に設定しているかのいずれかの状態になります。

次のコード例では、 メソッドと ProcessDialogKey メソッドをオーバーライドしてサブクラス内の ENTER キーのDataGridView動作を変更する方法をProcessDataGridViewKey示します。 この例では、ENTER キーの動作は→キーと同じであるため、ユーザーは 1 行のデータで複数のセルを簡単に編集できます。

public class CustomDataGridView : DataGridView
{
    protected override bool ProcessDialogKey(Keys keyData)
    {
        // Extract the key code from the key value. 
        Keys key = (keyData & Keys.KeyCode);

        // Handle the ENTER key as if it were a RIGHT ARROW key. 
        if (key == Keys.Enter)
        {
            return this.ProcessRightKey(keyData);
        }
        return base.ProcessDialogKey(keyData);
    }

    protected override bool ProcessDataGridViewKey(KeyEventArgs e)
    {
        // Handle the ENTER key as if it were a RIGHT ARROW key. 
        if (e.KeyCode == Keys.Enter)
        {
            return this.ProcessRightKey(e.KeyData);
        }
        return base.ProcessDataGridViewKey(e);
    }
}
Public Class CustomDataGridView
    Inherits DataGridView

    <System.Security.Permissions.UIPermission( _
        System.Security.Permissions.SecurityAction.LinkDemand, _
        Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _
    Protected Overrides Function ProcessDialogKey( _
        ByVal keyData As Keys) As Boolean

        ' Extract the key code from the key value. 
        Dim key As Keys = keyData And Keys.KeyCode

        ' Handle the ENTER key as if it were a RIGHT ARROW key. 
        If key = Keys.Enter Then
            Return Me.ProcessRightKey(keyData)
        End If

        Return MyBase.ProcessDialogKey(keyData)

    End Function

    <System.Security.Permissions.SecurityPermission( _
        System.Security.Permissions.SecurityAction.LinkDemand, Flags:= _
        System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
    Protected Overrides Function ProcessDataGridViewKey( _
        ByVal e As System.Windows.Forms.KeyEventArgs) As Boolean

        ' Handle the ENTER key as if it were a RIGHT ARROW key. 
        If e.KeyCode = Keys.Enter Then
            Return Me.ProcessRightKey(e.KeyData)
        End If

        Return MyBase.ProcessDataGridViewKey(e)

    End Function

End Class

注釈

このメソッドは、押されたキーに適したキー処理メソッド (F2 キーが押された場合のメソッドなど) を呼び出し、 ProcessF2Key そのメソッドの戻り値を返します。

注意 (継承者)

このメソッドをオーバーライドする場合、コントロールは キーを処理したことを示すために を返す true 必要があります。 コントロールによって処理されないキーの場合は、このメソッドの基本バージョンの結果を返します。

適用対象

こちらもご覧ください