Winform窗体传值

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();
原文地址:https://www.cnblogs.com/xiaofengfeng/p/3424995.html