委托与事件

  using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{

public partial class Form1 : Form
{
//委托是一个类型,事件是一个委托的特殊实例,事件的触发只能在类的内部执行
public Action<string> AfterMsgSend { get; set; }//委托方式
public event EventHandler AfterMsgChangeEvent;//定义消息发布事件
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Child childFrm = new Child();
//委托
//AfterMsgSend += childFrm.SetText;
//事件
AfterMsgChangeEvent += childFrm.AfterParentFrmTextChange;
childFrm.Show();
}

private void button1_Click(object sender, EventArgs e)
{
#region 委托方式
//if (AfterMsgSend == null)
//{
// return;
//}
//AfterMsgSend(this.textBox1.Text);
#endregion

AfterMsgChangeEvent(this, new TextBoxMsgChangeEventArg() { StrContent = this.textBox1.Text });
}
}
}

//TextBoxMsgChangeEventArg类

namespace WindowsFormsApplication1
{
public class TextBoxMsgChangeEventArg : EventArgs
{
public string StrContent { get; set; }
}
}