0

Я использую событие NodeMouseClick для обработки левого и правого кликов на моих TreeNodes некоторое время. Теперь я хочу добавить эффект и к среднему щелчку, но событие NodeMouseClick, похоже, не срабатывает средним щелчком. Это известная ошибка, или она работает нормально, и я просто делаю что-то неправильно? Если это ошибка (или просто предназначена для работы таким образом), как я могу сделать средний щелчок на TreeNode, чтобы сделать что-то конкретное с этим узлом?VB.Net TreeView NodeMouseНажмите среднюю кнопку мыши

Вот немного моего кода:

Private Sub TreeView1_NodeMouseClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick 
    If e.Button = Windows.Forms.MouseButtons.Left Then 
     Call nodeLeft(e.Node) 
    ElseIf e.Button = Windows.Forms.MouseButtons.Middle Then 
     Call nodeMiddle(e.Node) 
    ElseIf e.Button = Windows.Forms.MouseButtons.Right Then 
     Call nodeRight(e.Node) 
    End If 
End Sub 
+1

По дизайну собственный элемент управления TreeView сообщает только щелчки левой и правой кнопок. –

ответ

1

Вы можете попробовать эту версию:

Public Class MyTreeView 
    Inherits TreeView 

    Private Const WM_MBUTTONDOWN As Integer = &H207 

    Protected Overrides Sub WndProc(ByRef m As Message) 
    MyBase.WndProc(m) 
    If m.Msg = WM_MBUTTONDOWN Then 
     Dim p As Point = Me.PointToClient(MousePosition) 
     Dim mouseNode As TreeNode = Me.GetNodeAt(p) 
     If mouseNode IsNot Nothing Then 
     Me.OnNodeMouseClick(New TreeNodeMouseClickEventArgs(mouseNode, MouseButtons.Middle, 1, p.X, p.Y)) 
     End If 
    End If 
    End Sub 
End Class 

Это будет срабатывать событие NodeMouseClick со средним значением, установленным для свойства Button. Однако он не будет выбирать узел. Для этого добавьте строку Me.SelectedNode = mouseNode над вызовом OnNodeMouseClick.

+0

Я держусь за свой +1 до тех пор, пока вы не измените магическое число на значимую именованную константу. :-) Контекст, заданный вопросом, является единственным способом, я могу догадаться, что это 'WM_MBUTTONDOWN'. –

+0

@CodyGray Magic номер удален. – LarsTech

Смежные вопросы