You need to enable JavaScript to run this app. 选中特定TreeView节点时如何隐藏或禁用GroupBox?
优惠活动
大模型
产品
解决方案
定价
更多

选中特定TreeView节点时如何隐藏或禁用GroupBox?

问题原因

你之前编写的判断语句不符合VB.NET语法规则,VB中不支持直接用逗号分隔多个值、判断变量是否匹配列表中某一项的写法,因此逻辑无法生效。


可行实现方案

方案1:直接拼接判断条件

适合匹配节点数量少、后续无需频繁调整的场景,使用OrElse短路运算符拼接多个判断条件即可:

If TreeView1.SelectedNode.Text = "Preps" OrElse TreeView1.SelectedNode.Text = "Food" OrElse TreeView1.SelectedNode.Text = "Skills" Then

方案2:数组匹配(更推荐,扩展性强)

如果后续可能新增需要触发禁用的节点,推荐用数组存储匹配名单,调用Contains方法判断,代码更简洁易维护:

Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
    ' 定义所有需要触发禁用效果的节点名称列表
    Dim disableNodes As String() = {"Preps", "Food", "Skills"}
    
    ' 建议字符串拼接用&替代+,避免意外的类型转换错误
    GroupBox2.Text = TreeView1.SelectedNode.Text & " Input"
    Label18.Text = TreeView1.SelectedNode.Text & " Inventory"
    GroupBox3.Text = TreeView1.SelectedNode.Text & " Stored Totals"
    
    If disableNodes.Contains(TreeView1.SelectedNode.Text) Then
        GroupBox2.Enabled = False
        Panel1.Enabled = False
        GroupBox3.Enabled = False
    Else
        GroupBox2.Enabled = True
        Panel1.Enabled = True
        GroupBox3.Enabled = True
    End If
End Sub

可选优化

如果需要忽略节点文本的大小写差异(比如避免preps和Preps匹配失败),可以调整Contains参数:

If disableNodes.Contains(TreeView1.SelectedNode.Text, StringComparison.OrdinalIgnoreCase) Then

内容的提问来源于stack exchange,提问作者Malachilee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 19:54:01