C# C树视图在父选择时折叠/展开
这一点很难解释,所以我会告诉你我想要实现什么以及我是如何做到的,这样也许有人会知道我做错了什么 在我的winForm中,我有一个我填充的TreeView控件。所有的父母都有孩子,数量不限,但没有一个孩子有自己的孩子。例如:C# C树视图在父选择时折叠/展开,c#,treeview,expand,collapse,C#,Treeview,Expand,Collapse,这一点很难解释,所以我会告诉你我想要实现什么以及我是如何做到的,这样也许有人会知道我做错了什么 在我的winForm中,我有一个我填充的TreeView控件。所有的父母都有孩子,数量不限,但没有一个孩子有自己的孩子。例如: - Parent 1 Child 1 Child 2 Child 3 - Parent 2 Child 4 我想要的行为如下: 当用户单击一个子项时,默认情况下会选择“完成” 当用户单击父项时,它应该折叠或展开,
- Parent 1
Child 1
Child 2
Child 3
- Parent 2
Child 4
我想要的行为如下:
当用户单击一个子项时,默认情况下会选择“完成”
当用户单击父项时,它应该折叠或展开,但不更改任何选择
第1点没有问题,因为它是TreeView的默认行为,第2点则是另一种情况
以下是我迄今为止所做的工作:
为了防止选择父级,我添加了BeforeSelect事件处理程序,并将以下代码放入其中:
if (e.Node.Parent == null)
e.Cancel = true;
这项工作做得很好。现在我取消了对父对象的选择,我想展开或折叠它。因此,我将上述代码更改为:
if (e.Node.Parent == null)
{
if (e.Node.IsExpanded)
{
e.Node.Collapse();
}
else
{
e.Node.Expand();
}
e.Cancel = true;
}
这在某种程度上是可行的-除了,与单击+符号不同,调用Expand或Collapse会选择父节点,忽略e.Cancel=true;线路
在调用Collapse或Expand之前,我尝试获取SelectedNode,然后将其设置回原来的位置-它可以工作,但当我这样做时,它将再次展开父节点以进行选择
当我点击某个家长时,+符号正是我希望发生的事情——我似乎无法让它工作
想法
提前感谢试试这个:
private bool allowExpandCollapse = false;
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = !allowExpandCollapse;
}
private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = !allowExpandCollapse;
}
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if (e.Node.Parent == null)
{
e.Cancel = true;
}
}
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node.Parent == null)
{
allowExpandCollapse = true;
if (e.Node.IsExpanded)
{
TreeNode selectedNode = treeView1.SelectedNode;
e.Node.Collapse();
allowExpandCollapse = false;
treeView1.SelectedNode = selectedNode;
}
else
{
e.Node.Expand();
allowExpandCollapse = false;
}
}
}
复活旧线程的方法-哈哈-我已经离开了这个项目,但你的答案似乎很可靠,所以我会给你you@chiper你能解释一下这里发生了什么吗?我不完全确定。我的问题是,如果我在同一个节点上单击两次,我的SelectedNodeChanged不会触发一次用于展开,一次用于折叠我在树视图中没有找到SelectedNodeChanged事件。你是说选举后?实际上,当您单击某个根可展开节点时,此代码不会更改选择。请注意,您的树的结构应该遵循问题中的陈述:所有父母都有子女,数量不限,但没有子女有自己的子女