【问题标题】:Treeview - Event on Node Click but not Expansion in Visual Basic (VS 2012 V11)Treeview - 在 Visual Basic 中单击节点而不是展开事件(VS 2012 V11)
【发布时间】:2013-05-16 13:54:42
【问题描述】:

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

我正在尝试使TreeView 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

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

【问题讨论】:

    标签: vb.net treeview nodes expand collapse


    【解决方案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 语句非常重要。

    【讨论】:

      【解决方案2】:

      改用 AfterSelect 事件。

      【讨论】:

      • 代码处理这个事件几乎和点击一样。我可以添加一些If Statements 来修改行为,但它只提供了一半的修复(使用TreeViewContents.AfterSelectIf e.Node.IsExapanded And Also e.Node.Text.Equals("Program Help") 这会在单击节点减号框时阻止文本更改,但它也迫使用户必须展开一个节点,点击一个子节点,再点击父节点,展开后父节点的文字会发生变化。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 2010-11-26
      • 1970-01-01
      • 2020-12-07
      相关资源
      最近更新 更多