Visual Basic 11Visual Basic 12Windows 2008 R2Windows 2008Windows VistaWindows 7Windows 2003WindowsVisual Basic
TreeView 复选框双击的解决方法





5.00/5 (1投票)
这个技巧用于修复复选框双击中的一个漏洞。
引言
这个技巧用于解决此链接中的问题:
背景
当我尝试将 VB6 treeview
项目迁移到 VB.NET 时,我遇到了上述问题,以及双击展开和折叠也存在问题。为了解决这些问题,我编写了以下代码。
Using the Code
这段代码已经由 SwissMatt 发布。我只是实现了一些额外的功能,以便在单击 checkbox
时启用 Treeview
中的 doubleclick
事件。
Public Class MyTreeView
Inherits TreeView
Protected Overrides Sub WndProc(ByRef m As Message)
' Suppress WM_LBUTTONDBLCLK
If (m.Msg = &H203) Then
Dim Hitpoint As Point = New Point(CInt(m.LParam))
Dim tvhti As TreeViewHitTestInfo = HitTest(Hitpoint)
If tvhti IsNot Nothing AndAlso tvhti.Location = TreeViewHitTestLocations.StateImage Then
Me.SelectedNode = tvhti.Node
Dim tvs As New TreeNodeMouseClickEventArgs_
(Me.SelectedNode, Windows.Forms.MouseButtons.Left, 2, Hitpoint.X, Hitpoint.Y)
Dim mvs As New MouseEventArgs(Windows.Forms.MouseButtons.Left, 2, Hitpoint.X, Hitpoint.Y, 0)
OnNodeMouseDoubleClick(tvs)
OnMouseDoubleClick(mvs)
OnDoubleClick(New EventArgs)
If tvhti.Node.IsExpanded Then
SendKeys.Send("{LEFT}")
Else
SendKeys.Send("{RIGHT}")
End If
m.Result = IntPtr.Zero
Return
Else
MyBase.WndProc(m)
End If
Else
MyBase.WndProc(m)
End If
End Sub
End Class
关注点
在 TreeView Checkbox
上实现双击要困难得多。此外,展开和折叠的行为是我的想法。