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


DataGridView.ProcessDialogKey(Keys) Метод

Определение

Обрабатывает клавиши, такие как TAB, ESCAPE, ВВОД и клавиши со стрелками, используемые в диалоговых окнах элемента управления.

protected:
 override bool ProcessDialogKey(System::Windows::Forms::Keys keyData);
protected override bool ProcessDialogKey (System.Windows.Forms.Keys keyData);
override this.ProcessDialogKey : System.Windows.Forms.Keys -> bool
Protected Overrides Function ProcessDialogKey (keyData As Keys) As Boolean

Параметры

keyData
Keys

Битовая комбинация значений Keys, представляющая клавишу или клавиши, которые требуется обработать.

Возвращаемое значение

Значение true, если клавиша была обработана; в противном случае — значение false.

Исключения

Нажатая клавиша используется для перевода элемента управления в режим редактирования, но свойство EditType текущей ячейки не указывает класс, производный от Control и реализующий IDataGridViewEditingControl.

Это действие фиксирует значение ячейки или переводит ее в режим редактирования, однако ошибка в источнике данных блокирует выполнение этого действия, и для события 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

Комментарии

Этот метод вызывается в режиме редактирования для обработки ввода с клавиатуры, который не обрабатывается размещенным элементом управления редактированием.

Если нажатие клавиши не является входной клавишей, оно будет отправлено в базовый класс для обработки.

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

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

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

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