无法向TreeView控件添加新节点

时间:2015-11-15 16:56:57

标签: c# .net winforms treeview

我想从一个表单添加一个节点到另一个表单。我有以下代码,但它不起作用:

从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。

2 个答案:

答案 0 :(得分:0)

我找到了解决方案:

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

我认为这就是commit;特别是,方案1,我试图将它添加到Form1的 new 实例中的TreeView控件,而不是添加到Form1的现有实例。

答案 1 :(得分:0)

我看到两种可能的情况:

  1. 你有一个Form2,你需要在Form1的树视图中添加一个节点(假设Form1已经显示)。在这种情况下,您不能使用_HauptFenster = new Form1();这是一个新的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();
    }