C#はデリゲートとイベントを使用して、パラメーターの受け渡しを実現します

C#はデリゲートとイベントを使用して、パラメーターの受け渡しを実現します

代表団とイベントについての私の個人的な理解は、代表団は宅配便であり、イベントは手紙であり、イベントのプログラムは手紙の内容であるということです。実現プロセスは、宅配便業者が書面で手紙を郵送すること、つまり、イベントが委託を通じて外部に渡されることです。配達については、イベントが登録されている場所によって異なります。C#プログラムを作成するときは、デリゲートとイベントを使用していくつかのパラメーターを渡す必要があります。デリゲートとイベント受け渡しパラメーターの簡単な使用法の概要を次に示します

前提:ユーザーコントロールuc1がフォームで作成され、uc1のint型パラメーターをメインフォームに渡してtextBoxに表示する必要があります

ユーザーコントロールuc1:

//声明一个委托
public delegate void PassIntToFrmMainEventHandler(int number);
//声明一个要委托的事件
public event PassIntToFrmMainEventHandler  PassIntToFrmMainEvent;

int number = 1000;//这里是随便声明一个int参数

//单击button传递
private void button1_Click(object sender, EventArgs e)
{
     PassIntToFrmMainEvent(number);
}

フォームフォーム:

        public Form1()
        {
           
            InitializeComponent();
            //注册事件
            uc11.PassIntToFrmMainEvent += new uc1.PassIntToFrmMainEventHandler(ReceiveInt);
        }

        private void ReceiveInt(int number)
        {
            //将uc1中传来的Int参数在textBOX中显示
            textBox1.Text = number.ToString();
        }

注:宣言されたコミッションで渡される必要があるパラメーターのタイプ、つまり、コミッションのタイプは、イベントで渡されるタイプと同じである必要があります。つまり、果物の配達には、衣服ではなく果物をロードする必要があります。

パラメータの委任に加えて、次のようにイベントを直接委任することもできます。

uc1コントロールの場合:

        public delegate void  UC1TextboxChanageHandler(object sender,TextChangeEventarges e);
        public event UC1TextboxChanageHandler TextChangeEvent;

        //继承事件基类的类
        public class TextChangeEventarges:EventArgs 
        {
            private readonly string txt;
            public TextChangeEventarges(string txt) 
            {
                this.txt = txt;
            }
            public string GetTxt 
            {
                get 
                {
                    return txt;
                }
            }
        }

        public UCForm1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (this.TextChangeEvent != null) 
            {
                this.TextChangeEvent(this, new TextChangeEventarges(this.textBox1.Text));
            
            }
        }

フォーム:

        public FormMain()
        {
          
            InitializeComponent();
           
            this.uc1.TextChangeEvent += new UCForm1.UC1TextboxChanageHandler(uc1_TextChangeEvent);
            
        }

        void uc1_TextChangeEvent(object sender, UCForm1.TextChangeEventarges e)
        {
             textBox1.Text = e.GetTxt;
        }

 

おすすめ

転載: blog.csdn.net/Kevin_Sun777/article/details/109728588