1:委托:
父窗体;
private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); //frm.fatherform = this;//将当前窗体赋给fatherform //frm.getTextHandler += new Form2.GetTextHandler(getValue);//给事件赋值(注意:GetText方法的参数必须与GetTextHandler委托的参数一样,方可委托) frm.getTextHandler = getValue;//将方法赋给委托对象 frm.ShowDialog(); }
子窗体:
public delegate void GetTextHandler(string text);//声明委托 // public event GetTextHandler getTextHandler = null;//定义委托事件 public GetTextHandler getTextHandler;//委托对象 private void button1_Click(object sender, EventArgs e) { //if (fatherform != null) //{ // fatherform.getValue(this.textBox1.Text.Trim()); // this.Close(); //} if (getTextHandler != null) { getTextHandler(this.textBox1.Text.Trim()); this.Close(); } }
2:例子:
父窗体:
private void btnAgain_Click(object sender, EventArgs e) { FrmWaitSettleSalesOrder frm = new FrmWaitSettleSalesOrder(EnumShowFormType.编辑, dayOrderID); frm.Owner = this; frm.ShowUpdate += new FrmWaitSettleSalesOrder.DiaplayUpdate(ShowUpdate); frm.ShowDialog(); }
public void ShowUpdate() { GetData(); GetClickOnTopRow(); }
子窗体:
public delegate void DiaplayUpdate(); public event DiaplayUpdate ShowUpdate;
事件中方法 FrmDailyStateMentDetail frmFather = (FrmDailyStateMentDetail)this.Owner; frmFather.ShowUpdate();