【问题标题】:How to find a Treenode and set Checked=True如何找到 Treenode 并设置 Checked=True
【发布时间】:2018-07-24 14:33:44
【问题描述】:

我正在尝试使用Find 方法在TreeView 中查找一个节点,然后将该节点的CheckBox 设置为True

Dim node As TreeNode() = TreeView1.Nodes.Find(FindStr, True)

代码发现节点很好,但是当我尝试类似的东西时

TreeView1.Nodes(node).Checked=True

它没有,节点没有返回Integer。我认为它正在返回它所找到的集合,这很好。由于键是唯一的,因此如果确实找到它,它只会返回一个节点。但我仍然没有任何运气能够选中它的框。

我已经在谷歌上搜索了一个多小时的答案,尝试了不同的关键字以防万一,但我没有得到任何有用的结果。

【问题讨论】:

    标签: vb.net checkbox find treeview treenode


    【解决方案1】:

    Find-函数返回一个节点数组。

    如果应该检查第一个找到的节点,以下将起作用:

    Dim nodes As TreeNode() = TreeView1.Nodes.Find(FindStr, True)
    
    'Check if at least one node was found
    If nodes.Length > 0 Then
        'Set Checked=True for the first found node (index 0)
        nodes(0).Checked = True
    End If
    

    【讨论】:

    • 啊!我的下一个问题是我一直将我的唯一 ID 存储在标签下(数据库记录 ID) - 我认为该查找正在寻找完整路径 - 我是否正确假设? (完整路径是节点的文本表示)
    • 是的,它正在寻找文本。如果您需要搜索标签,这应该会有所帮助:stackoverflow.com/questions/19226857/…
    • 这真的很有帮助,我喜欢单线的外观(linq?当你发布时我刚刚写完一个递归搜索循环)并且更愿意让单线工作,转换为vb 它是 Dim result = TreeView1.Nodes.OfType(Of TreeNode)().FirstOrDefault(Function(node) node.Tag.Equals(TagName)) (标记名是我正在寻找的变量)但它似乎没有返回任何东西,结果总是为空,所以只需要找出原因。
    • LINQ one liner 不适用于递归搜索。我怀疑有没有办法用一个班轮解决这个问题。
    • 啊对。嗯,非常感谢你,Mat - 你一直很有帮助,我真的很感谢你的帮助 :)
    猜你喜欢
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2018-04-09
    • 2011-02-05
    • 1970-01-01
    • 2015-02-25
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多