我试图实际上取消选择我的TreeView中的所有节点。通过“实际”,我的意思是TreeView1.SelectedNode = null;
实际上会取消选择树中的节点。实际上取消选择TreeView中的所有节点(.NET)
从目视上看,节点被取消选择。但是,当我尝试添加新节点时,树视图会自动选择树中的第一个节点(位于顶部),并在理想情况下创建父节点时创建子节点。我不能在添加之前取消选择所选节点,因为用户可能想要添加一个子节点。我想要添加的父/子节点的行为将基于在树视图中选择的内容。如果未选择任何内容,请添加父项,如果选择了某项内容,请在该选定节点中添加一个子项。
我构造一个名为node
一个TreeNode
对象与图像和文本的功能和所有的话,我有以下几点:
if (tvContent.SelectedNode == null)
tvContent.Nodes.Add(node);
else
{
tvContent.SelectedNode.Nodes.Add(node);
tvContent.SelectedNode.Expand();
}
我有一个“全部取消”,即应该使上面的代码键工作。该按钮的代码很简单:
tvContent.SelectedNode = null;
请原谅我的C#和VB.NET标记。我对两个人都很好,所以如果有人能用任何一种语言来帮助我,那就太棒了!
感谢
编辑: 有趣。看起来,在测试选定节点是否为空时,.NET会自动将所选节点设置为树中的第一个节点。以下代码显示“触发器”消息框,但在if
语句完成后立即选择树中的第一个节点。
private void btnDeselectAll_Click(object sender, EventArgs e)
{
tvContent.SelectedNode = null;
if (tvContent.SelectedNode == null) MessageBox.Show("trigger");
}
编辑2:问题在于使用InputBox作为节点的标题输入。无论出于何种原因,这会更改树视图的选定节点。我在股票项目中尝试了这一点,并设法复制这个问题。我想这没有修复:S
放在tvContent.SelectedNode块,F11(分步调试)断点权之后,看看你的代码的行改变了tvContent.SelectedNode到第一节点。 – Martheen
没有找到任何改变它的代码,它真的看起来像它自己改变。 – KingDan
@Martheen请查看我的帖子编辑。看起来这是奇怪的行为.net – KingDan