我也是,將KeyPreview設為True後,按Del,DataGridview沒有反應,只好重寫DataGridView: Public Class CustomKeyEventDataGridView Inherits DataGridView Public Event RowRemoving(ByVal iRowIndex As Integer) <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 If key = Keys.Delete AndAlso Me.SelectedRows.Count > 0 Then RaiseEvent RowRemoving(Me.CurrentRow.Index) Return False ' Me.ProcessDeleteKey(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 If e.KeyCode = Keys.Delete AndAlso Me.SelectedRows.Count > 0 Then Return Me.ProcessDeleteKey(e.KeyData) End If Return MyBase.ProcessDataGridViewKey(e) End FunctionEnd Class自定義了RowRemoving事件,但在Winform中: Private Sub RemoveRowing(ByVal iRow As Integer) Handles dgvDatas.rowremoving End Sub 提示dgvDatas.rowremoving找不到事件. 怎麼辦?
Public Class CustomKeyEventDataGridView
Inherits DataGridView Public Event RowRemoving(ByVal iRowIndex As Integer) <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 If key = Keys.Delete AndAlso Me.SelectedRows.Count > 0 Then
RaiseEvent RowRemoving(Me.CurrentRow.Index) Return False ' Me.ProcessDeleteKey(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 If e.KeyCode = Keys.Delete AndAlso Me.SelectedRows.Count > 0 Then
Return Me.ProcessDeleteKey(e.KeyData)
End If Return MyBase.ProcessDataGridViewKey(e) End FunctionEnd Class自定義了RowRemoving事件,但在Winform中:
Private Sub RemoveRowing(ByVal iRow As Integer) Handles dgvDatas.rowremoving End Sub
提示dgvDatas.rowremoving找不到事件.
怎麼辦?