DataGridView.ProcessDataGridViewKey(KeyEventArgs) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
处理用于在 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
参数
包含有关所按键的信息。
返回
如果已处理该键,则为 true
;否则为 false
。
例外
按下的键将导致该控件进入编辑模式,但当前单元格的 EditType 属性不指示派生自 Control 并实现 IDataGridViewEditingControl 的类。
此操作将提交一个单元格值或者进入编辑模式,但是数据源中的错误禁止执行此操作,DataError 事件没有处理程序,或者处理程序已将 ThrowException 属性设置为 true
。
- 或 -
删除键将删除一行或多行,但数据源中的错误将阻止删除,并且将没有针对 DataError 事件的处理程序,或处理程序已将 ThrowException 属性设置为 true
。
示例
下面的代码示例演示如何通过重写 ProcessDataGridViewKey 和 ProcessDialogKey 方法来更改子类中 DataGridView Enter 键的行为。 在此示例中,Enter 键的行为与向右键相同,使用户能够更轻松地编辑单行数据中的多个单元格。
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
以指示它已处理密钥。 对于控件未处理的键,返回此方法的基本版本的结果。