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