日期:2014-05-17  浏览次数:20765 次

求助,C# 关于委托的使用
我有2个窗体 。分别是1和2; 窗体1中有个datagridview控件 ,我想通过窗体2里面一个点击按钮 来刷新datagridview数据,请问用委托的话怎么实现? 谢谢了。 希望能有大牛来解答。详细的代码麻烦写一下。我还是新手呢。

------解决方案--------------------
form1 中
private void button1_Click(object sender, EventArgs e)
{
Form2 fr2 = new Form2();
fr2.Tag = this;
fr2.Show(); 

}
public void UpdateGridView(DataTable d)
{
dataGridView1.DataSource =d;
}
form2中
private void button1_Click(object sender, EventArgs e)
{
DataTable table=new DataTable();
Form1 f = (Form1)this.Tag;
f.UpdateGridView(table);

}
------解决方案--------------------
C# code

public delegate void WarnDelegate();  
  
    public partial class Form1 : Form  
    {  
        public Form1()  
        {  
            InitializeComponent();  
        }  
  
        public  void Alarm()  
        {  
            //刷新Grid
        }  
  
        private void button1_Click(object sender, EventArgs e)  
        {  
            Form2 f2 = new Form2();  
            f2.Show();  
            f2.WarnEvent += new WarnDelegate(Alarm);  
        }  
    }  





public partial class Form2 : Form
    {
        public event WarnDelegate WarnEvent;
        public Form2()
        {
            InitializeComponent();
        }
        public void OnWarnEvent()
        {
            if (WarnEvent != null)
            {
                WarnEvent();
            }
        }
        public void Warn()
        {
            OnWarnEvent(e);
        }
        private void button1_Click(object sender, EventArgs e)//点击它就会执行Form1中的Alarm来刷新Grid
        {
            Warn();
        }
    }