1. 程式人生 > 其它 >C#自定義類中加入事件

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;
        }
    }