добавление дочерних узлов в treeview

Помимо двух упомянутых вами, в C # очень распространено отсутствие префикса для закрытых членов.

class Foo
{
    private int i;
    private string id; 
}

Это то, что я использую, а также то, что рекомендуется в внутренних указаниях Microsoft по именованию .

15
задан Brian Webster 17 October 2012 в 16:56
поделиться

3 ответа

Это не так уж плохо, но вы забыли вызвать treeView2.EndUpdate () в своем методе addParentNode_Click () .
Вы также можете вызвать treeView2.ExpandAll () в конце вашего метода addChildNode_Click () , чтобы напрямую увидеть ваш дочерний узел.

private void addParentNode_Click(object sender, EventArgs e) {
  treeView2.BeginUpdate();
  //treeView2.Nodes.Clear();
  string yourParentNode;
  yourParentNode = textBox1.Text.Trim();
  treeView2.Nodes.Add(yourParentNode);
  treeView2.EndUpdate();
}

private void addChildNode_Click(object sender, EventArgs e) {
  if (treeView2.SelectedNode != null) {
    string yourChildNode;
    yourChildNode = textBox1.Text.Trim();
    treeView2.SelectedNode.Nodes.Add(yourChildNode);
    treeView2.ExpandAll();
  }
}

Не знаю, была это ошибка или нет, но было 2 TreeView. Я изменил его только на 1 TreeView ...

РЕДАКТИРОВАТЬ: Ответ на дополнительный вопрос:
Вы можете объявить переменную, содержащую имя дочернего узла, вне предложения if:

private void addChildNode_Click(object sender, EventArgs e) {
  var childNode = textBox1.Text.Trim();
  if (!string.IsNullOrEmpty(childNode)) {
    TreeNode parentNode = treeView2.SelectedNode ?? treeView2.Nodes[0];
    if (parentNode != null) {
      parentNode.Nodes.Add(childNode);
      treeView2.ExpandAll();
    }
  }
}

Примечание: см. http://www.yoda.arachsys.com/csharp/csharp2/nullable.html для получения информации о ?? оператор.

21
ответ дан 1 December 2019 в 01:24
поделиться

Пример добавления дочерних узлов:

private void AddExampleNodes()
        {
            TreeNode node;

            node = treeView1.Nodes.Add("Master node");
            node.Nodes.Add("Child node");
            node.Nodes.Add("Child node 2");

            node = treeView1.Nodes.Add("Master node 2");
            node.Nodes.Add("mychild");
            node.Nodes.Add("mychild");
        }
2
ответ дан 1 December 2019 в 01:24
поделиться

Похоже, вы добавляете дочерние элементы только к первому родительскому treeView2.Nodes [0] .Nodes.Add (yourChildNode)
В зависимости от того, как вы хотите, чтобы он вел себя, вам необходимо четко указать родительский узел, к которому вы хотите добавить дочерний узел.
Например, как показано на скриншоте, если вы хотите добавить дочерний элемент ко второму узлу, вам потребуется:
treeView2.Nodes [1] .Nodes.Add (yourChildNode)
Если вы хотите добавить дочерние элементы к выбранный в данный момент узел, получите TreeView.SelectedNode и добавьте к нему дочерние элементы.

Попробуйте TreeView , чтобы получить представление о том, как работает класс. К сожалению, документация msdn не содержит примеров кода ...

Мне здесь не хватает множества проверок безопасности!

Что-то вроде (непроверено):

private void addChildNode_Click(object sender, EventArgs e) {
  TreeNode ParentNode = treeView2.SelectedNode;  // for ease of debugging!
  if (ParentNode != null) {
    ParentNode.Nodes.Add("Name Of Node");
    treeView2.ExpandAll();   // so you can see what's been added              
    treeView2.Invalidate();  // requests a redraw
  }
}
2
ответ дан 1 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: