Form1类中含有一个treeview结构
点击form1的button按钮
弹出Form2类的一个窗口form2
该窗口负责接收一些文件信息  并创建一个新文件
然后怎么能够在form1中的treeview中增加一个新节点form1的treeview 在Form2 类中不可见
错误提示 找不到treeview的上下文望达人指点谢谢

解决方案 »

  1.   

    可以返回个参数,然form1的treeview 从新加载就可以
      

  2.   

    关于窗体间的数据交互,可以用委托,方法,public属性,事件等都可以实现,具体可以看我的Blog,
    http://blog.csdn.net/yumanqing/archive/2006/10/23/1346272.aspx
    http://blog.csdn.net/yumanqing/archive/2006/10/23/1346272.aspx
      

  3.   

    你把这个treeview设为public就可以
    默认是private
    窗口的属性列表里有modifiers,就是这个设为public也可以把Form1里treeview的引用做为参数传给Form2
      

  4.   

    我把问题说的简单了
    是这样的
    先是点击form1的button  弹出 form2
    在form2中输入文件名 文件描述等
    然后点击OK
    弹出form3
    在form3中有textbox  在其中输入文件内容
    然后创建 文件
    然后需要更新form1中的treeview节点
    可在form3中 form1的treeview不可见啊
      

  5.   

    from1里写个internal修饰符的方法,在别的窗体里直接调用这个方法就行了。
      

  6.   

    我在Form1的设计器中点击button 创建了Form2的对象 form2
    在form2中点击button创建了 form3
    好像没有创建form1对象啊?
      

  7.   

    类似:
    窗体互相引用增加了 耦合 度. 建议楼主用 Delegate+Event, 如下是实例:
    1 定义一个公用的委托 
       public delegate void DataSourceAddDelegate();
    2 中间类:
        public class MyDataSource
        {
            public static ArrayList m_ArrayList = new ArrayList();
            public static event DataSourceAddDelegate DataSourceAddEvent;        public static void  Add(string str)
            {
                m_ArrayList.Add(str );
                if (DataSourceAddEvent != null)
                    DataSourceAddEvent();
            }
        }3 主窗体 Form1:
               public Form1()
            {
                InitializeComponent();
                MyDataSource.DataSourceAddEvent += new DataSourceAddDelegate(RefreshListBox); 
            }        private void RefreshListBox()
            {
                this.listBox1.DataSource = null;            
                this.listBox1.DataSource = MyDataSource.m_ArrayList;
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                f2.ShowDialog();
            }4 Form2 
            private void button1_Click(object sender, EventArgs e)
            {
                if (!String.IsNullOrEmpty(this.textBox1.Text))
                {
                    MyDataSource.Add(this.textBox1.Text);                
                    this.textBox1.Text = "";
                    this.textBox1.Focus();
                }
            }
      

  8.   

    在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如:
            public static yourMainWindow pCurrentWin = null;
     
           然后在主窗体构造函数中,给静态成员初始化,如下:
                pCurrentWin = this;请问 我的问题中 yourMainWindow 应该用什么替换??
    谢谢
      

  9.   

    请问 我的问题中 yourMainWindow 应该用什么替换??
    谢谢
    -----------------------------
    应该用Form1来替换
      

  10.   

    在from1中定义:
    public static Form1 form1=this;然后在from3,包括任何form中都可以
    form1.TreeView1.Nodes.Add()........
      

  11.   

    我的方法使用参数传递,带out关键字的参数,lz form2,form3都用的是showdialog方法弹出的吧,我也有类似的需求,我是自己写了个公用方法,包装form2,form3的showdialog,然后考参数传递信息