我需要对 DataGridView 进行子类化,以获得解决方案中所有 DataGridView 所需的某些功能。
为此,我制作了这些示例代码:
Imports System.ComponentModel
Public Class xDataGridView
Inherits DataGridView
Protected Overrides Sub onKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
If e.Control Then
If e.KeyCode = Keys.Up Or e.KeyCode = Keys.Down Then
e.Handled = True
End If
End If
End Sub
Protected Overrides Sub onMouseDown(ByVal e As MouseEventArgs)
' part of code for drag/drop
fromindex = Me.HitTest(e.X, e.Y).RowIndex
If fromindex > -1 Then
Dim dragSize As Size = SystemInformation.DragSize
dragrect = New Rectangle(New Point(CInt(e.X - (dragSize.Width / 2)), CInt(e.Y - (dragSize.Height / 2))), dragSize)
Else
dragrect = Rectangle.Empty
End If
End Sub
使用 onKeyDown 我终止了 Ctrl+Up 到 GO HOME 和 Ctrl+Down 到 GO END 的内置功能。使用 onMouseDown 我为拖放执行通用代码。
所有这些实际上都可以正常工作,除了我在包含此类的主程序上的事件 _KeyDown 和 _MouseDown 永远不会被触发!如果我从类中删除这些代码,则主程序中的事件将按预期触发。
1)我做错了什么以及如何让主程序中的_KeyDown和_MouseDown在课堂上被解雇。
2)如何摆脱DataGridView的内置功能Ctrl+Click?