C# 关闭特定树视图节点上的加号/减号

C# 关闭特定树视图节点上的加号/减号,c#,winforms,C#,Winforms,我有一个System.Windows.Forms.TreeView控件,我想为其关闭特定子TreeNode对象的加号/减号。我知道我可以使用TreeView.ShowPlusMinus属性在整个TreeView级别上执行此操作,但我想知道我是否可以仅为选定的TreeNode对象隐藏符号。根据上面的编辑,如果TreeView是不可折叠的节点,则应该覆盖它的BeforeClopse事件以取消折叠: private void treeView1_BeforeCollapse(object sender

我有一个
System.Windows.Forms.TreeView
控件,我想为其关闭特定子TreeNode对象的加号/减号。我知道我可以使用
TreeView.ShowPlusMinus
属性在整个TreeView级别上执行此操作,但我想知道我是否可以仅为选定的TreeNode对象隐藏符号。

根据上面的编辑,如果TreeView是不可折叠的节点,则应该覆盖它的BeforeClopse事件以取消折叠:

private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e) {
  MyParameter myP = e.Node.Tag as MyParameter;
  if (myP != null) {
    if (myP.Type == MyParameterType.NonCollapsible) {
      e.Cancel = true;
    }
  }
}

根据上面的编辑,如果树视图是不可折叠的节点,则应覆盖树视图的BeforeClopse事件以取消折叠:

private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e) {
  MyParameter myP = e.Node.Tag as MyParameter;
  if (myP != null) {
    if (myP.Type == MyParameterType.NonCollapsible) {
      e.Cancel = true;
    }
  }
}
唉,Windows窗体类包装了本机控件,该控件只支持全局显示或隐藏加号/减号

这是因为,在内部,该标志映射到控件样式,这当然会影响整个控件,而不是单个项

据我所知,实现所需功能的唯一方法是处理事件和。

唉,Windows窗体类包装本机,该控件只支持全局显示或隐藏加号/减号

这是因为,在内部,该标志映射到控件样式,这当然会影响整个控件,而不是单个项

据我所知,实现您想要的目标的唯一方法是处理事件,并且。

每个TreeViewItem(TVTItem)都有一个CCChildren成员。 如果为0,则plusminus符号隐藏。如果为1,则显示+符号

别忘了TVIF_儿童标志

我会回答,因为我搜索了同一个问题,但没有找到答案。

每个TreeViewItem(TVTItem)都有一个cChildren成员。 如果为0,则plusminus符号隐藏。如果为1,则显示+符号

别忘了TVIF_儿童标志


我回答,因为我搜索了同一个问题,但没有找到答案。

你的意思是不删除节点吗?@jp2code:节点是通过从web服务读取数据动态加载的。在将每个节点加载到树中之前,我想检查它是否应该是不可折叠的节点,在这种情况下,我想禁用加号/减号(另外,我也会将节点置于展开模式,并禁用正常的双击展开/折叠行为)。将节点添加到树后,我无需再次调整加号/减号。您的意思是不删除节点吗?@jp2code:通过从web服务读取数据来动态加载节点。在将每个节点加载到树中之前,我想检查它是否应该是不可折叠的节点,在这种情况下,我想禁用加号/减号(另外,我也会将节点置于展开模式,并禁用正常的双击展开/折叠行为)。在将节点添加到树之后,我不需要再调整加号/减号。对不起,我意识到我的评论可能有点误导。我应该说“隐藏”,而不是说“禁用”加号/减号。基本上,我想禁用展开/折叠行为并隐藏加号/减号,这样用户就可以清楚地看到节点不能折叠。我不知道怎么做的关键是隐藏加号/减号。我认为内置控件不可能做到这一点。如果你想离开轴心,你必须自己滚。对不起,我意识到我的评论可能有点误导。我应该说“隐藏”,而不是说“禁用”加号/减号。基本上,我想禁用展开/折叠行为并隐藏加号/减号,这样用户就可以清楚地看到节点不能折叠。我不知道怎么做的关键是隐藏加号/减号。我认为内置控件不可能做到这一点。如果你想离开轴心,你必须自己滚。