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