У меня есть узел древовидной структуры с трехуровневой иерархией. В настоящее время работает функция «Добавить», «Удалить». Осталось только добавить измененный текст в выбранный узел, не удаляя узел перед вставкой?
Я видел некоторые вопросы на этом форуме и в результатах поиска, но решения выглядят не так, как мне нужно.
Решения, которые я нашел: -
Получить индекс выбранного узла, удалить его, вставить новый в выбранный узел индекса. На здесь
Выполните цикл внутри узла treeview, чтобы найти и заменить выбранную строку узла новой строкой. На здесь.
Почему я не могу следовать приведенной выше идее?
- Если выбранный узел был удален первым, будет ли удален и дочерний узел?
- Если существует более 1 узла с одинаковым текстом, его необходимо заменить в рекурсивном цикле.
Теперь у меня есть указатель родительского и текущего выбранного. Итак, это будет два индекса иерархии.
indxparent.Text = TreeView1.SelectedNode.Parent.Index.ToString() ?? "-";
indxchild.Text = TreeView1.SelectedNode.Index.ToString() ?? "-";
Как программировать добавление нового текста в выбранный узел / в индекс выбранного узла?
Использование рабочего кода до того, как Кемпет предложил свои решения:
Метод 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;