怎么在一个form里刷新另一个form里的datagrid?
假设datagrid在form1里,form里有如下的刷新函数 
 		public   void   Refreshgrid() 
 		{ 
 			ds.Clear(); 
 			myadapter.Fill(ds, "manager "); 
 			grid.DataSource   =   ds; 
 			grid.DataMember   =    "manager "; 
 			grid.Refresh(); 
 		} 
 其中ds为dataset   ,manager为数据库表名,grid为datagrid对象,在form1里面调用该函数可以实现datagrid的刷新 
 但是在窗口form2里面的一个按钮事件里面   有如下代码: 
 			manager.Form5.mainform.Refreshgrid();   
 			this.Dispose(); 
 			manager.Form5.mainform.gform.Dispose(); 
 其中mainform为from1的一个对象   后两句代码为关闭两个打开的窗口 
 这样没有办法实现datagrid的刷新   请问应该怎么做?
------解决方案--------------------假设datagird在form1,只要把form1的实例传到form2中,就可以在form2中使用form1中的public函数和变量了,你可以用属性来把form1的实例传入form2中 
 例如: 
 form2窗体: 
 private Form1 form1; 
 public Form1 Form1 
 { 
     get { return form1 ; } 
     set { form1 = value ;} 
 }   
 form1中的button按键如下: 
 form2 temp = new form2(); 
 temp.Form1 = this; 
 temp.Show();     
 这样你就可以在form2中直接调用form1.Refreshgrid()函数了。
------解决方案--------------------如果datagrid在form1里的话。就把刷新函数放到form1里面,代码如下:   
 public static bool IsExist = false;//标识form1是否已经存在或实例化 - 默认为不存在...   
 //form1加载时改变标记 
 private void form1_Load(object sender, System.EventArgs e) 
 { 
    IsExist = true; 
 }   
 ////form1关闭后还原标记 
 private void form1_Closed(object sender, System.EventArgs e) 
 { 
    IsExist = false; 
 } 
 //静态的...注意把DataSet和DataGrid也定义成静态的... 
 public static void Refreshgrid() 
 { 
    //如果form1已经实例化或在内存中存在时,运行以下操作... 
    if(IsExist) 
    { 
       ds.Clear(); 
       myadapter.Fill(ds, "manager "); 
       grid.DataSource = ds; 
       grid.DataMember =  "manager "; 
       grid.Refresh(); 
    } 
 }   
 实现在form里面刷新form1的datagrid。只要在form的Button事件里加如下代码就可以了:   
 form1.Refreshgrid();     
 另外一种方法。就更好了。。。 
 用委托事件就可以。。。 
 在委托的方法里面用this.IsDisposed来判断form1是否存在来实现功能就可以了。。。 
 实现步骤虽然比较复杂。但是效率更高... 
 此种方式,强烈推荐...