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
Параметры
Возвращаемое значение
Исключения
Нажатие клавиши приведет к вводу элемента управления в режим редактирования, но 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 , чтобы указать, что он обработал ключ. Для ключей, которые не обрабатываются элементом управления, возвращают результат базовой версии этого метода.