gpt4 book ai didi

c# - TreeView 不显示更新

转载 作者:行者123 更新时间:2023-11-30 22:36:33 25 4
gpt4 key购买 nike

我的 Windows 窗体用户界面中有一个 TreeView。我想从数据库中填充它,但它永远不会刷新,即使我对每个节点都使用 WriteLine(),它也如我所料在内存中。

为了让它更容易理解,我写了一个小示例程序,它只有一个按钮创建一个 TreeView 和一个名为 treeView1 的 TreeView 来显示其内容。

如果有人能告诉我我在哪里误解了 TreeView 的使用,那将是一个巨大的帮助。

private void button1_Click(object sender, EventArgs e)
{
// create a tree
TreeView t = new TreeView();
TreeNode[] child = new TreeNode [1];
child[0]=new TreeNode("myCat");
child[0].Name = "IndependantOne";
TreeNode categoryNode = new TreeNode("catIdTag", child);
categoryNode.Name = "Citizen Cat 5239002147";
t.Nodes.Add(categoryNode);
// some stuff under the first node
TreeNode[] mouseNode = new TreeNode[1];
mouseNode[0] = new TreeNode("myMouse");
mouseNode[0].Name = "SqueakyOne";
TreeNode[] childItem = new TreeNode[1];
childItem[0] = new TreeNode("mouseIdTag", mouseNode);
childItem[0].Name = "Citizen Mouse 54655654649";
TreeNode eltNode = new TreeNode("Cheese", childItem);
eltNode.Name = "Emmental";
t.Nodes["Citizen Cat 5239002147"].Nodes.Add(eltNode);

// fill in the winform treeview
if (t != null)
{
//treeView1.Visible = false;
treeView1.BeginUpdate();
treeView1.Nodes.Clear();
treeView1.TopNode = t.TopNode;
foreach (TreeNode n in t.Nodes)
{
treeView1.Nodes.Add(n);
System.Diagnostics.Debug.WriteLine("Category Node contains: " + treeView1.Nodes[n.Name].Name + " at " + treeView1.Nodes[n.Name].Level);
foreach (TreeNode no in treeView1.Nodes[n.Name].Nodes)
{
System.Diagnostics.Debug.WriteLine("Category Node Nodes contains: " + no.Name);
}
}
/*
This part I tried and it doesn't work either, still add it in the question if anyone knows if it's wiser?
this.treeView1 = t;
this.treeView1.Location = new System.Drawing.Point(233, 12);
this.treeView1.Name = "treeView1";
this.treeView1.Size = new System.Drawing.Size(351, 277);
this.treeView1.TabIndex = 11;
this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
*/
treeView1.EndUpdate();
this.treeView1.Update();
this.treeView1.Refresh();

treeView1.Show();
//this.Refresh();
}


}

我还尝试用

设置 treeView1
 treeView1 = t;

没有成功...

最佳答案

改变

treeView1.Nodes.Add(n);

treeView1.Nodes.Add((TreeNode)n.Clone());

您不能在多个 TreeView 控件中托管同一节点。

或者,您可以在将节点添加到其他 TreeView 之前从源 TreeView 中删除节点:

while(t.Nodes.Count != 0)
{
var node = t.Nodes[0];
t.Nodes.RemoveAt(0);
treeView1.Nodes.Add(node);
}

而且我希望在您的方法中创建和填充 TreeView 而不是直接填充已经存在的 TreeView 有一个真正的原因。如果这不是预期的行为,请完全删除 if block 并将 TreeView t = new TreeView(); 更改为 var t = treeView1

关于c# - TreeView 不显示更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940774/

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