我有一个System.Windows.Forms.TreeView
控件,我想关闭特定子TreeNode对象的加号/减号。我知道我可以使用TreeView.ShowPlusMinus
属性在整个TreeView级别执行此操作,但我想知道是否可以仅为选定的TreeNode对象隐藏符号。
答案 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标志。
我回答,因为我搜索了同样的问题而没有找到答案。