Помимо двух упомянутых вами, в C # очень распространено отсутствие префикса для закрытых членов.
class Foo
{
private int i;
private string id;
}
Это то, что я использую, а также то, что рекомендуется в внутренних указаниях Microsoft по именованию .
Это не так уж плохо, но вы забыли вызвать 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 для получения информации о ?? оператор.
Пример добавления дочерних узлов:
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");
}
Похоже, вы добавляете дочерние элементы только к первому родительскому 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
}
}