C#自定义类中加入事件

 在自定义类中加入事件,事件参数可以是基础类型,或自定义类型(需继承自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;
        }
    }

 

posted @ 2022-05-23 17:47  东经115  阅读(331)  评论(0编辑  收藏  举报