C#如何在不删除treeview上的子节点的情况下替换选定的节点文本?

时间:2017-05-18 04:31:52

标签: c# winforms treeview .net-4.6

enter image description here

我有一个带有3层层次结构的treeview节点。目前,该功能为添加,删除工作。他们只留下将修改后的文本附加到所选节点而不删除插入之前的节点?

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

我找到的解决方案: -

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

  2. 在树视图节点内循环,以使用新字符串查找和替换所选节点字符串。在here

  3. 为什么我不能遵循上述想法?

    1. 如果首先删除所选节点,那么孩子也会删除吗?
    2. 如果有多个节点具有相同的文本,则必须在递归循环中替换它。
    3. 我现在拥有的是父母和当前选定的索引。所以,它将是两个层次结构索引。

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

      如何编程将新文本修改为所选节点/所选节点索引?

      在Kempeth提出解决方案之前使用工作代码:
      方法1:

      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);
      }  
      

      方法2:

      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;
      

1 个答案:

答案 0 :(得分:2)

您是否尝试过设置Text的<{1}}属性?

SelectedNode