Тем не менее, эта ветка старая ... Я не нашел легкого решения этой проблемы, поэтому я провел собственное расследование. Это результат:
Наследовать специализированный Treeview, который имеет желаемое поведение от Treeview.
Переопределение MouseDown и проверка, будет ли это двойной щелчок. Если это так, предотвратите расширение / свертывание, установив флажок для подавления действия.
BeforeExpand / collapse переопределяются, чтобы отменить действие, если установлен флаг.
Вы можете сбросить флаг в вашем BeforeExpand / Collapse-EventHandler, если хотите.
Public Class DblClickTreeview
Inherits TreeView
Private _SupressExpColl As Boolean = False
Private _LastClick As DateTime = Now
Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
_SupressExpColl = Now.Subtract(_LastClick).TotalMilliseconds <= SystemInformation.DoubleClickTime
_LastClick = Now
MyBase.OnMouseDown(e)
End Sub
Protected Overrides Sub OnBeforeCollapse(e As TreeViewCancelEventArgs)
e.Cancel = _SupressExpColl
MyBase.OnBeforeCollapse(e)
End Sub
Protected Overrides Sub OnBeforeExpand(e As TreeViewCancelEventArgs)
e.Cancel = _SupressExpColl
MyBase.OnBeforeExpand(e)
End Sub
End Class