gpt4 book ai didi

c# - 在 TreeView 中添加子节点

转载 作者:可可西里 更新时间:2023-11-01 03:13:43 25 4
gpt4 key购买 nike

我是 C# 新手,没有任何编程经验。但我已经完成了 C# 基础知识。现在我想通过添加父节点和子节点来设计一个简单的 TreeView 。

我想为第二个节点添加第二个子节点,我被困在这里,不知道下一步是什么。

有什么想法吗?

代码如下:

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

private void addChildNode_Click(object sender, EventArgs e)
{
string yourChildNode;
yourChildNode = textBox1.Text.Trim();
treeView2.Nodes[0].Nodes.Add(yourChildNode);
}

抱歉,我不清楚,我不确定我是否真的需要这个:

  //treeView1.BeginUpdate(); 
//treeView1.Nodes.Clear();

我想做的是添加父节点和子节点。在我的代码中,我可以添加多个父节点,但是如果我想添加一个子节点,它只会添加第一个父节点。我希望如果我添加一个子节点,我想将它添加到第二个父节点或第三个父节点。

在我的代码中,我在这里只使用一个 TreeView ,它命名为 treeview2这是 screenshot

我的最终代码是这样的:在我输入 else 之前,如果我不选择任何东西,我会收到错误消息。所以我这样做了,如果没有选择任何东西,它会将“子节点”添加到“默认节点”或(parent1 节点)。它似乎工作得很好。谢谢大家;-)

    //This is for adding a parent node
private void addParentNode_Click(object sender, EventArgs e)
{
treeView2.BeginUpdate();

string yourParentNode;
yourParentNode = textBox1.Text.Trim();
treeView2.Nodes.Add(yourParentNode);
treeView2.EndUpdate();
}

//This is for adding child node
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();
}
//This is for adding the child node to the default node(parent 1 node)
else
{
string yourChildNode;
yourChildNode = textBox1.Text.Trim();
treeView2.Nodes[0].Nodes.Add(yourChildNode);
}

附加问题:有没有其他方法可以让代码变得更好?因为在这里,我声明了字符串“yourChildNode”两次。一个在 if 中,另一个在 else 中,是否有任何简化?

最佳答案

还不错,但是您忘记在 addParentNode_Click() 方法中调用 treeView2.EndUpdate()
您还可以在 addChildNode_Click() 方法末尾调用 treeView2.ExpandAll() 以直接查看您的子节点。

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有关 ?? 的信息运营商。

关于c# - 在 TreeView 中添加子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/881607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com