C#中用事件实现窗体间的传值
用事件 实现窗体间的传值
父窗体代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
namespace 窗体间传值_用事件来做 { public partial class Parentfrm : Form { //定义消息发布的事件 public event EventHandler AfterMsgEvent; public Parentfrm() { InitializeComponent(); } private void Parentfrm_Load(object sender, EventArgs e) { Childfrm frm = new 窗体间传值_用事件来做.Childfrm(); //子窗体弹出来之前关注父窗体的变化 事件方式 AfterMsgEvent += frm.AfterParentFrmTextChange;//在childfrm中生成方法 frm.Show(); } private void btnSend_Click(object sender, EventArgs e) { //触发事件 AfterMsgEvent(this, new TextBoxMsgChangeEventArg() { Text = this.txtMsg.Text });//属性触发器 } } }
用于存储文本的属性类代码如下:
namespace 窗体间传值_用事件来做 { public class TextBoxMsgChangeEventArg:EventArgs//写一个类继承于EventArgs,这样在父窗体中点击按钮时就能调用 { public string Text { get; set; }//写一个属性来存储文本 } }
子窗体代码如下:
namespace 窗体间传值_用事件来做 { public partial class Childfrm : Form { public void SetText(string txt) { txtMsg.Text = txt; } public Childfrm() { InitializeComponent(); } public void AfterParentFrmTextChange(object sender, EventArgs e) { //拿到父窗体传来的文本 TextBoxMsgChangeEventArg arg = e as TextBoxMsgChangeEventArg; this.SetText(arg.Text);//调用方法,将类属性存储的文本传给他 } private void Childfrm_Load(object sender, EventArgs e) { } } }