我试图取消 TreeView 中所有节点的选择。所谓的“真正取消选择”是指 TreeView1.SelectedNode = null;
会实际取消树中的节点。
目前,从视觉上看,该节点已被取消选择。但是,当我尝试添加新节点时,treeview 会自动选择树中的第一个节点(位于顶部)并创建子节点,而我理想情况下要创建父节点。在添加之前,我也不能仅取消选择选定的节点,因为用户可能想要添加子节点。我希望的行为是基于 TreeView 中选定的内容来添加父/子节点。如果没有选定任何内容,则添加父节点;如果选定了内容,则在选定的节点中添加子节点。
我在函数中构建了名为 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。我两种语言都很熟悉,所以如果有人能帮我解决其中一种语言的问题那就太棒了!
谢谢
编辑:
有趣的是,在测试所选节点是否为null时,.NET会自动将所选节点设置为树中的第一个节点。下面的代码显示了"trigger"消息框,但在if
语句完成后立即选择树中的第一个节点。
private void btnDeselectAll_Click(object sender, EventArgs e)
{
tvContent.SelectedNode = null;
if (tvContent.SelectedNode == null) MessageBox.Show("trigger");
}
编辑2:问题在于使用InputBox作为节点标题输入的工具。由于某种原因,这会更改树形视图中所选节点。我在一个普通项目中尝试了一下,并成功地复制了该问题。我想这是无法解决的:S