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