【问题标题】:C# How to replace selected node text without removing the child node on treeview?C#如何在不删除树视图上的子节点的情况下替换选定的节点文本?
【发布时间】:2023-03-31 23:57:02
【问题描述】:

我有一个具有 3 层层次结构的树视图节点。目前,添加、删除功能正常工作。他们只剩下将修改后的文本附加到所选节点中而不在插入之前删除节点?

我在这个论坛和搜索引擎结果中看到了一些问题,但解决方案看起来不像我需要的。

我找到的解决方案:-

  1. 获取选定的节点索引,将其删除,插入新的选定索引节点。在here

  2. 在树视图节点内循环,查找并用新字符串替换选定的节点字符串。在here

为什么我不能按照上面的想法?

  1. 如果选中的节点先被移除,那么子节点也会被移除吗?
  2. 如果有超过 1 个节点具有相同的文本,则必须在递归循环中替换。

我现在拥有的是 Parent 和 Current Selected 的索引。因此,它将是层次结构的两个索引。

indxparent.Text = TreeView1.SelectedNode.Parent.Index.ToString() ?? "-";
indxchild.Text = TreeView1.SelectedNode.Index.ToString() ?? "-";

如何编程修改新文本到选定节点/选定节点索引?

Kempeth 提出他的解决方案之前的工作代码使用:
方法一:

string newdata = "This is new information data";
TreeView1.LabelEdit = true;
if (!TreeView1.SelectedNode.IsEditing)
{
    TreeView1.SelectedNode.BeginEdit();
    TreeView1.SelectedNode.Text = newdata;
    TreeView1.SelectedNode.EndEdit(false);
}  

方法二:

string newdata = "This is new information data";
TreeNode node = new TreeNode(newdata);
TreeView1.SelectedNode.Parent.Nodes.RemoveAt(IndexOfSelectedNode);
TreeView1.SelectedNode.Parent.Nodes.Insert(IndexOfSelectedNode, node);
TreeView1.SelectedNode = node;

【问题讨论】:

    标签: c# winforms treeview .net-4.6


    【解决方案1】:

    您是否尝试过简单地设置SelectedNodeText 属性?

    TreeView1.SelectedNode.Text = TreeView1.SelectedNode.Text + " MAGIC!"
    

    【讨论】:

    • 严肃的人。我尝试过一些这样的。不完全像这样,但很可能失败了。所以,在我半天的工作日在这里发帖之前,我一直在寻找答案。我什至使用 BeginEdit 进行搜索,只是为了不删除我需要的内容。 string newdata = "新的信息数据"; Treeview1.LabelEdit = true; if (!Treeview1.SelectedNode.IsEditing) { Treeview1.SelectedNode.BeginEdit(); Treeview1.SelectedNode.Text = newdata; Treeview1.SelectedNode.EndEdit(false);但你的解决方案,直接命中..谢谢@Kempeth
    猜你喜欢
    • 2023-04-03
    • 2021-05-10
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    相关资源
    最近更新 更多