Поделиться через


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 должна удалить одну или несколько строк, однако ошибка в источнике данных блокирует удаление, и для события DataError нет обработчика, или обработчик задал для свойства ThrowException значение true.

Примеры

В следующем примере кода показано, как изменить поведение ключа ВВОД в подклассе DataGridView путем переопределения ProcessDataGridViewKey методов и ProcessDialogKey . В этом примере клавиша ВВОД работает так же, как и клавиша СТРЕЛКА ВПРАВО, что упрощает редактирование нескольких ячеек в одной строке данных.

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

Комментарии

Этот метод вызывает метод обработки клавиш, соответствующий нажатой клавише (например, ProcessF2Key метод при нажатии клавиши F2), и возвращает возвращаемое значение этого метода.

Примечания для тех, кто наследует этот метод

При переопределении этого метода элемент управления должен вернуться true , чтобы указать, что он обработал ключ. Для ключей, которые не обрабатываются элементом управления , возвращается результат базовой версии этого метода.

Применяется к

См. также раздел