在自定义类中加入事件,事件参数可以是基础类型,或自定义类型(需继承自System.EvenArgs)
class AddText
{
//internal event EventHandler<string> AddShowText;//使用基础类型时
internal event EventHandler<StringEvenArgs> AddShowText;//使用自定义类型时
public virtual void OnAddShowText(StringEvenArgs str)
{
AddShowText?.Invoke(this, str);
}
}
/// <summary>
/// 定义一个事件的传递参数类型,必须继承自:System.EvenArgs
/// </summary>
public class StringEvenArgs : System.EventArgs
{
public readonly string str;
public StringEvenArgs(string s)
{
str = s;
}
}
然后在调用上述类时,可以将事件通知到本类中的方法中。
public partial class Form1 : Form
{
AddText AddText = new AddText();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
AddText.AddShowText += AddText_AddShowText;
}
///<summary>
/// 触发事件
///</summary>
private void txtInput_TextChanged(object sender, EventArgs e)
{
AddText.OnAddShowText(new StringEvenArgs(txtInput.Text));
}
private void AddText_AddShowText(object sender, StringEvenArgs e)//e的数据类型要与事件定义的一致
{
txtShow1.Text = e.str;
txtShow2.Text = e.str;
}
}