C# TreeView从其他表单查看节点

C# TreeView从其他表单查看节点,c#,treeview,C#,Treeview,我有一个用DINAMICALL创建的节点的树状视图 当我关闭其他窗体时,我希望从其他窗体访问节点 但它不起作用 样本: 表格1 表格2 Show(treeView1.Nodes.Count.ToString()) 结果:0此行中存在问题: using (Form1 form1 = new Form1()) 您正在将Form1的新实例发送到Form2。您应该发送表单1的当前实例,如下所示: private void button1_Click(object sender, EventArgs e

我有一个用DINAMICALL创建的节点的树状视图

当我关闭其他窗体时,我希望从其他窗体访问节点

但它不起作用

样本:

表格1

表格2

Show(treeView1.Nodes.Count.ToString())


结果:0

此行中存在问题:

using (Form1 form1 = new Form1())
您正在将
Form1
的新实例发送到
Form2
。您应该发送
表单1的当前实例,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    using (Form2 form2 = new Form2(this))
    {
        form2.StartPosition = FormStartPosition.CenterParent;
        form2.ShowDialog();
    }
}

这方面的问题是:

using (Form1 form1 = new Form1())
您正在将
Form1
的新实例发送到
Form2
。您应该发送
表单1的当前实例,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    using (Form2 form2 = new Form2(this))
    {
        form2.StartPosition = FormStartPosition.CenterParent;
        form2.ShowDialog();
    }
}

您构造Form1两次。一次使用按钮显示窗体。按下按钮后,您将创建Form1的另一个实例。第二个实例是表格2。但是第二个实例的Load事件从未被调用,这意味着它的树从未被填充。仅当显示表单时才会调用Load事件,并且从不显示此实例

我建议你遵循尼诺的答案


或者。。。如果您坚持要有多个Form1实例,请将填充树的代码移到Form1的构造函数中,而不是在Load eventhandler中。

您构造了两次Form1。一次使用按钮显示窗体。按下按钮后,您将创建Form1的另一个实例。第二个实例是表格2。但是第二个实例的Load事件从未被调用,这意味着它的树从未被填充。仅当显示表单时才会调用Load事件,并且从不显示此实例

我建议你遵循尼诺的答案


或者。。。如果您坚持要有多个Form1实例,请将填充树的代码移动到Form1的构造函数中,而不是Load eventhandler中。

Ehh,这是一个多么根本的错误……感谢您快速的回答!啊,这是一个根本性的错误…谢谢你快速的回答!投票支持我懒得写的解释:)谢谢@尼诺:没关系,我明白问题所在。请投票给我一个解释,我懒得写:)谢谢@尼诺没关系,我明白问题所在。