0

我正在尝试在 Visual Basic 中制作帮助文件。我决定采用复制旧样式帮助文件的方式,在表单TreeView的左侧使用面板,在右侧使用 。RichTextbox(此设置与PowerShell中的帮助文件几乎一模一样。

我正在努力做到这一点,以便当 aTreeView NodeSingle ClickedRichTextbox Text将更改为适当的文本。这是我的代码:

 Private Sub treeView_NodeMouseClick(ByVal sender As Object, ByVal e As TreeNodeMouseClickEventArgs) Handles TreeViewContents.NodeMouseClick
        If e.Node.Text.Equals("Program Help") Then
            RTBHelp.Text = Environment.NewLine & "Help text here."
        End If

        If e.Node.Text.Equals("Program Getting Started") Then
            RTBHelp.Text = Environment.NewLine & "Getting Started text here"
        End If

    End Sub

问题是,只需单击.旁边的Plus或,文本就会改变。但是,我想模拟PowerShell帮助行为,单击或展开或折叠节点但不更改. 只有单击名称 ( ) 本身时才会发生变化。我尝试了几种方法,但似乎都没有奏效。我该怎么办?MinusTreeView NodePlusMinusRichTextbox TextNodesTextRichTextbox Text

4

2 回答 2

1

这可能为时已晚,但我也遇到了同样的问题。我使用了 AfterSelect 事件。从逻辑上讲,当我们试图展开节点时会触发 NodeClick 事件,因为我们通过展开节点来单击它。如果只对鼠标所做的选择感兴趣,则有必要检查 e.Action = TreeViewAction.ByMouse。

Private Sub treeView_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles treeView.AfterSelect
    If e.Action = TreeViewAction.ByMouse Then
        If e.Node.Text.Equals("Program Help") Then
          RTBHelp.Text = Environment.NewLine & "Help text here."
        End If

        If e.Node.Text.Equals("Program Getting Started") Then
            RTBHelp.Text = Environment.NewLine & "Getting Started text here"
        End If
    End If

End Sub

通过使用“if TreeViewAction.ByMouse then ...”,如果按下箭头键或鼠标,if 语句下的代码将被执行。因此,如果仅要捕获鼠标选择,则第一个 If 语句非常重要。

于 2013-08-14T12:31:15.223 回答
0

请改用 AfterSelect 事件。

于 2013-05-21T18:50:34.903 回答