关闭特定TreeView节点上的加号/减号

时间:2011-06-28 19:59:38

标签: c# winforms

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

3 个答案:

答案 0 :(得分:1)

唉,Windows窗体TreeView类包装了原生tree view control,该控件只支持全局显示或隐藏加号/减号。

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

据我所知,实现目标的唯一方法是处理DrawNode事件和render everything yourself

答案 1 :(得分:0)

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

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;
    }
  }
}

答案 2 :(得分:0)

每个TreeViewItem(TVITEM)都有一个cChildren成员。 如果为0,则加上迷号符号。如果为1,则显示+号。

请参阅 http://msdn.microsoft.com/en-us/library/windows/desktop/bb773456%28v=vs.85%29.aspx

不要忘记TVIF_CHILDREN标志。

我回答,因为我搜索了同样的问题而没有找到答案。