读书人

关于c#窗体开发,该怎么解决

发布时间: 2012-02-17 17:50:42 作者: rapoo

关于c#窗体开发
VisualStutio 2005有两个窗体,所含控件如下:
form1:treeview1,其中含有1个root的根节点,button1(用来打开form2)

form2:有个button1

如何通过form2中得按钮创建treeview1 root下得一个名为“hh”得子节点。

(已经通过传递form1得一个引用给了form2)代码:
form1中: Form2 fr=new Form2(this);
fr.ShowDialog();
form2中: private Form1 f;
public Form2(Form1 fr)
{
InitializeComponent();
f = fr;
}

[解决办法]
传数据,不要传界面类
在你需要搜集数据的时候,如果用户点击了确定按钮并且数据校验通过,那么把用户输入保存到表单属性,在调用form的方法里面等搜集数据成功的时候访问表单属性来获得用户输入并且更新界面
[解决办法]
form1里面的treeview是form1的私有变量,在外部用不起来的所以不可能在form2的button单击事件里面写treeview的添加动作,这个问题通常需要你自己再写个委托,或者做成事件。

C# code
    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            if (Form2.s_addNode == null)            {                Form2.s_addNode = this.AddForMyTree;            }        }        private void button1_Click(object sender, EventArgs e)        {            Form2 f = new Form2();            f.Show();        }        private void AddForMyTree()        {            TreeNode t = new TreeNode("N2");            treeView1.Nodes.Add(t);        }    }    public delegate void AddNode();    public partial class Form2 : Form    {        public static AddNode s_addNode;        public Form2()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            s_addNode();        }    }
[解决办法]
用f.treeview1.....

可以直接访问的吧?有这种用法。

读书人网 >C++ Builder

热点推荐