如果选择的树视图项目是父级,我需要隐藏/取消启用分组框。我尝试了几种方法,但都不起作用。
这是我尝试过的一件事。
Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
If TreeView1.SelectedNode.Parent = True Then
GroupBox2.Enabled = False
Panel1.Enabled = False
GroupBox3.Enabled = False
Else
GroupBox2.Enabled = True
Panel1.Enabled = True
GroupBox3.Enabled = True
End If
End Sub
如有任何建议/帮助,我将不胜感激。谢谢
发布于 2021-06-13 04:56:57
为了便于将来的扩展,您可以将所有要更改的控件保留在一个列表中,并执行以下操作:
Private _leafControls As List(Of Control)
Public Sub New()
InitializeComponent()
_leafControls = New List(Of Control)
_leafControls.Add(Panel1)
_leafControls.Add(GroupBox2)
_leafControls.Add(GroupBox3)
End Sub
Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
_leafControls.ForEach(Function (x) x.Enabled = TreeView1.SelectedNode.Parent Is Nothing)
End Sub
将更多控件添加到构造函数的列表中,以将行为扩展到其他控件
如果只有3个控件,也许硬编码会更简单:
Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
GroupBox2.Enabled = TreeView1.SelectedNode.Parent Is Nothing
Panel1.Enabled = GroupBox2.Enabled
GroupBox3.Enabled = GroupBox2.Enabled
End Sub
你不需要测试某个东西等于一个布尔值,然后在If中设置布尔值,你只需要使用从运行测试中得到的布尔值:
'enable groupbox 2 when the selected node has no parent
GroupBox2.Enabled = TreeView1.SelectedNode.Parent Is Nothing
(此逻辑来自评论;会话标题中要求的逻辑不同):
'disable groupbox when treenode has children(is a parent)
'=enable groupbox when node has no children
GroupBox2.Enabled = TreeView1.SelectedNode.Nodes.Count = 0
请将您的控件命名为比GroupBox2、Panel1更好的名称
https://stackoverflow.com/questions/67952996
复制