Code Bye

点击一个窗体按钮,更新另一窗体DataGridview中的数据

在Stockedit窗体中,修改了数据,点击保存按钮,想实现   StockSelect窗体中DataGridview控件中数据的更新,
我在StockSelect添加了如下方法:
         public void  Refsdata()
        {
            DataTable dt = new DataTable();
            dt = stoBll.GetStockSelectData();
            //绑定数据
            this.dgvContent.DataSource = dt;
            this.dgvContent.Refresh(); 
        }
但是我怎么调用呢?
我尝试了这样写,但是不对啊:

10分
Stockedit中定义一个委托属性属性,在打开Stockedit窗口时,将刷新数据的方法赋值给该委托。
然后保存完过后,调用该委托就是了。

10分
1、StockSelect类的构造函数是否公有可访问的
2、每次重新创建一个StockSelect对象是否符合自身的需求
3、可参考窗体之间传值或通信的做法,网上很多。比如,在Stockedit中保存一个StockSelect对象;使用委托等等
StockEdit窗体中点击“保存”按钮,程序会将数据保存到数据库中,
StockSelect窗体的后台代码,会在StockSelect窗体打开的时候重新查询数据库,将数据加载到该窗体的DataGridview控件中。那么,现在问题来了:
如果StockSelect窗体未打开的情况下,StockEdit窗体保存完数据后,再去打开StockSelect窗体时,新修改的数据会自动加载到Datagridview控件中;   但是,若StockSelect窗体当前已经打开的同时,在Edit窗体修够数据后,点保存按钮  ,Select窗体的数据也不会自动刷新啊?
我该怎么做呢?应该怎么使用委托方法呢?
fieldset>
引用 1 楼 NGC3623 的回复:

Stockedit中定义一个委托属性属性,在打开Stockedit窗口时,将刷新数据的方法赋值给该委托。
然后保存完过后,调用该委托就是了。


10分
用事件,先打开Form2
Form1:
pre class=”brush: csharp”>
public delegate void AddRowEventHandler(object[] o);
public event AddRowEventHandler AddRow;
private void button1_Click(object sender, EventArgs e)
{
object[] o = new object[] { “a”, “10” };
this.dataGridView1.Rows.Add(o);
if (this.AddRow != null)
{
this.AddRow(o);
}
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
this.AddRow += f2.AddRow;
f2.Show();
}
/pre>
Form2:
pre class=”brush: csharp”>
public void AddRow(object[] o)
{
this.dataGridView1.Rows.Add(o);
}
/pre>

10分
http://bbs.csdn.net/topics/390128592
解决了,代码如下:
    Edit窗体中:
              //刷新委托
             public delegate void RefreshData();
             public partial class StockAdjustEdit      //
            {
                     /// <summary>
                    /// 刷新事件
                    /// </summary>
                    public static event RefreshData RefData = null; 
             }
             保存按钮中添加:
                if (RefData != null)
                    {
                        RefData();
                    }
/pre>
          Select窗体中:在窗体为活动状态添加委托方法中填写 :
      private void StockSelect_Activated(object sender, EventArgs e)
         {
               //刷新数据
                StockAdjustEdit.RefData += new RefreshData(DataRef);
         }
        在窗体非活动状态中添加去除委托:
        private void StockSelect_Leave(object sender, EventArgs e)
          {
               //刷新数据
                StockAdjustEdit.RefData -= new RefreshData(DataRef);
          }

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明点击一个窗体按钮,更新另一窗体DataGridview中的数据