我无法在 Treeview 中添加 Treenode

I can't add Treenode in Treeview

我想通过子表单向父表单添加一个树节点 但是它没有出现在树视图中

我还添加了 treeview imageIndex

请告诉我如何添加树节点

// [childform]
private void button1_Click(object sender, EventArgs e)
{
   main _main = new main();
   _main.SetFtpClient();
}

//[MainForm]
private void toolStripButton1_Click(object sender, EventArgs e)
{
   _ConnectForm.StartPosition = FormStartPosition.CenterParent;
   _ConnectForm.ShowDialog(this);
}

public void SetFtpClient()
{
   TreeNode svrNode = new TreeNode("server", 0, 0);
   svrNode.Nodes.Add("SE", "seoul", 0, 0);
   svrNode.Nodes.Add("DJ", "seoul1", 0, 0);
   svrNode.Nodes.Add("BS", "seoul2", 0, 0);

   TreeNode netNode = new TreeNode("network", 1, 1);
   netNode.Nodes.Add("T1", "Cable", 1, 1);
   netNode.Nodes.Add("56K", "Modem", 1, 1);
   netNode.Nodes.Add("3G", "Wireless", 1, 1);
   tv_ftp.Nodes.Add(svrNode);
   tv_ftp.Nodes.Add(netNode);
}

有很多方法可以做到这一点。一种方法是在您的子表单中引用您的主表单。在您的子表单构造函数中添加一个参数。假设子窗体的名称是 ConnectForm,主窗体是 MainForm.

using System;
using System.Windows.Forms;

namespace TreeViewDemo
{
    public partial class ConnectForm : Form
    {
        Form parent; // a reference of the main form

        public ConnectForm(Form form)
        {
            InitializeComponent();

            // set a reference of the main form
            parent = form;
        }

        void Button1Click(object sender, EventArgs e)
        {
            // you have to cast it to the MainForm first,
            // otherwise the method SetFtpClient is not accessible
            var _main = (MainForm) parent;
            _main.SetFtpClient();
        }
    }
}

然后使用参数化构造函数将主窗体传递到子窗体。

using System;
using System.Windows.Forms;

namespace TreeViewDemo
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        void Button1Click(object sender, EventArgs e)
        {
            // create an instance of child form, and pass the main form into it
            var _ConnectForm = new ConnectForm(this);

            _ConnectForm.StartPosition = FormStartPosition.CenterParent;
            _ConnectForm.ShowDialog(this);
        }

        public void SetFtpClient()
        {
            TreeNode svrNode = new TreeNode("server", 0, 0);
            svrNode.Nodes.Add("SE", "seoul", 0, 0);
            svrNode.Nodes.Add("DJ", "seoul1", 0, 0);
            svrNode.Nodes.Add("BS", "seoul2", 0, 0);

            TreeNode netNode = new TreeNode("network", 1, 1);
            netNode.Nodes.Add("T1", "Cable", 1, 1);
            netNode.Nodes.Add("56K", "Modem", 1, 1);
            netNode.Nodes.Add("3G", "Wireless", 1, 1);
            tv_ftp.Nodes.Add(svrNode);
            tv_ftp.Nodes.Add(netNode);
        }
    }
}