无法向 TreeView 控件添加新节点

Can't add new nodes to TreeView control

我想将节点从一种形式添加到另一种形式。我有以下代码,但它不起作用:

来自 Form2:

private void button2_Click(object sender, EventArgs e)
{
    _HauptFenster = new Form1();
    _HauptFenster.AddGroup(textBox1.Text);
    this.Close();   
}

到 Form1:

public void AddGroup(string name)
{
    MessageBox.Show(name);
    Einträge.Nodes.Add(name);
}

我可以在 MessageBox 中看到节点的真实名称,但是该节点没有被添加到 Form1 上的 TreeView 中。

我找到了解决方案:

Form1 master = (Form1)Application.OpenForms["Form1"];
master.Einträge.Nodes.Add(name);

我想这就是;具体来说,场景 1,我试图将它添加到 Form1 的 new 实例中的 TreeView 控件,而不是添加到 existing Form1 的实例。

我看到两种可能的情况:

  1. 您有一个 Form2,您需要向 Form1 的树视图添加一个节点(假设 Form1 已经显示)。在这种情况下,您不能使用 _HauptFenster = new Form1();,它是一个新的 Form1,而不是您已经拥有的那个。你应该做的是在 form2:

    中引用 form1
    public partial class Form1 : Form
    {
        Form1 form1;
    
        public Form2()
        {    
            InitializeComponent();
        }
    
        public Form2(Form1 form1):this()
        {
            this.form1= form1;
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            form1.AddGroup("something");
            this.Close();
        }
    }
    

    并更改打开 Form2 的方式:

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2= new Form2(this);
        form2.Show();
    }
    
  2. Form1还没有显示,因为你忘了调出来:

    private void button1_Click(object sender, EventArgs e)
    {
        Form1 form1= new Form1 ();
        form1.Show();
        form1.AddGroup("something");
        this.Close();
    }