我是说我有一个程序,FORM1是父窗体,FORM2是子窗体,FORM2上有一个treeview,节点的名称是后台数据库的内容,FORM1和FORM2均处于打开状态,现在通过FORM1的菜单打开FORM3,在FORM3上给后台数据库新增一条记录,当关闭FORM3时,FORM2上的treeview节点名称同时得到更新。如何实现?

解决方案 »

  1.   

    问题是我在FORM3上如何用代码使FORM2上的treeview重新bind?
      

  2.   

    楼主说的意思是要在主窗体中操作子窗体的treeview 你在from2的设计类中,将treeview权限修改为public 就行了,这样form1中就能访问了,你在from1中对from3.show()后,数据库操作完了后,再查询数据库数据绑定treeview应该就行吧,??不知楼主是这个意思不?
      

  3.   

    Form3通过MdiParent属性找到Form1Form1通过MdiChildren[]子窗体数组找到Form2,操作Form2的TreeView就可以了
      

  4.   

    Form1 f1 = (Form1)Form3.MdiParent;
    Form2 f2 = (Form2)f1.MdiChildren[0];//假设是第0个窗体
    操作f2.TreeView就OK了
      

  5.   

    问题是我如何在FORM3上执行FORM2上TreeView的bind方法?
      

  6.   

    把这代码放到Form3里执行就行了啊private void RefreshForm2(){    Form1 f1 = (Form1)Form3.MdiParent;     Form2 f2 = null;
        foreach(Form frm in f1.MdiChildren)
        {
            if(frm is Form2)
            {
               f2=(Form2)frm;
               break;
            }
        }
        if(f2==null)return;//没找到
        f2.BindTree();//Form2的BindTree方法要公开
    }
      

  7.   

    使用委托,运行后提示:"未将对象引用设置到对象的实例。" 为什么?
    Form3的代码
    public delegate void SendMess(); 
    public event SendMess SendBindDatum;private void buttonOK_Click(object sender, EventArgs e)
    {
        this.SendBindDatum();
        this.Close();
    }Form2的代码
    private Form3 frmForm3 = new Form3();
    frmForm3 = new Form3();
    frmForm3.SendBindDatum += new Form3.SendMess(SendBindDatum);private void SendBindDatum()
    {
       this.BindDatum();
    }
      

  8.   

    返回一个事件,UPDATE一下你的TREEVIEW就可以啊.
      

  9.   

    public delegate void SendMess(); 
    public event SendMess SendBindDatum; 
    不是已经定义委托和事件了吗?
    "未将对象引用设置到对象的实例。" 指的是什么呀?代码错在哪里呀?