# WinFormTransferValue **Repository Path**: hdlbdyr/win-form-transfer-value ## Basic Information - **Project Name**: WinFormTransferValue - **Description**: winform窗体传值案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-09-12 - **Last Updated**: 2024-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 窗体传值解析 > 父传子方式一 构造函数传值/属性传值 这个就不解释了,没啥可说的 > 父传子方式二 委托事件传值 ```C# // 也可以使用框架自带事件 EventHandler public event EventHandler DataTransfer; // DataEventArgs 是继承自 EventArgs 的一个类 // PS:按理说 应该随便定义一个类就行(只是传值的情况下) // 核心代码 // 父窗体代码 public delegate void CustomParentTransferChildrenDelegate(object sender, T e); public event CustomParentTransferChildrenDelegate CustomParentTransferChildrenEvent; private void btnCustom_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(this.txtParent.Text)) { MessageBox.Show("请输入Parent值", "提示"); return; } // 将传递的值给到事件 CustomParentTransferChildrenEvent.Invoke(this, new DataEventArgs(this.txtParent.Text)); // CustomParentTransferChildrenEvent(this, new DataEventArgs(this.txtParent.Text)); 和上面这句代码是等价的 } // 核心代码 // 子窗体代码 private void FrmChildren_Load(object? sender, EventArgs e) { this.txtParent.Text = this.Message; var parentFrm = (FrmMain)this.Owner; parentFrm.DataTransfer += ParentFrm_DataTransfer; // 框架自带 EventHandler // 子窗体实现事件方法 parentFrm.CustomParentTransferChildrenEvent += ParentFrm_CustomTransferData; // 自定义事件 } /// /// 自定义事件 /// /// /// private void ParentFrm_CustomTransferData(object sender, DataEventArgs e) { this.txtParent.Text = e.Data; } ``` > 子传父 ```C# // 核心代码 // 子窗体代码 public delegate void CustomChildrenTransferParent(T data); public event CustomChildrenTransferParent CustomChildrenTransferParentEvent; private void btn_Transfer_Value_Click(object sender, EventArgs e) { string input = this.txtChildren.Text; // 将传递的值给到事件 CustomChildrenTransferParentEvent(new DataEventArgs(input)); } // 核心代码 // 父窗体代码 private void btnOpenChildren_Click(object sender, EventArgs e) { FrmChildren frm = new FrmChildren(); // 父窗体实现子窗体事件方法 frm.CustomChildrenTransferParentEvent += Frm_CustomChildrenTransferParentEvent; // 子窗体事件父窗体实现(事件委托) frm.Show(); } // 子窗体事件父窗体实现(事件委托) private void Frm_CustomChildrenTransferParentEvent(DataEventArgs data) { this.txtChildren.Text = data.Data; } ```