namespaceDelegateTest
{
publicpartialclassForm1:Form
{
publicdelegatevoidShowTextValue(stringtext);//代理
publiceventShowTextValueshowText;//代理事件
publicForm1()
{
InitializeComponent();
//把事件加入事件队列中
showText+=newShowTextValue(SetText);
}
//开始代理
publicvoidStartDelegate(stringstr){
showText(str);
}
//设置文本框的值
privatevoidSetText(stringstr){
textBox1.Text=str;
}
//textBox1的TextChange事件
privatevoidtextBox1_TextChanged(objectsender,EventArgse)
{
showText(textBox1.Text);
}
privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse)
{
//在关闭窗口时去掉代理事件,因为没加载一次窗体就代理了SetText方法,
//如果不去掉,这个窗口开几次,SetText方法就会执行几次
//事件队列中的方法会按顺序执行
showText-=newShowTextValue(SetText);
}
}
}
namespaceDelegateTest
{
publicpartialclassForm2:Form
{
Form1form1;
publicForm2()
{
InitializeComponent();
}
privatevoidSetText(stringtext)
{
textBox1.Text=text;
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
form1=newForm1();
form1.showText+=newForm1.ShowTextValue(SetText);
form1.Show();
}
privatevoidtextBox1_TextChanged(objectsender,EventArgse)
{
form1.StartDelegate(textBox1.Text);
}
privatevoidForm2_FormClosing(objectsender,FormClosingEventArgse)
{
form1.showText-=newForm1.ShowTextValue(SetText);
}
}
}
namespaceDelegateTest
{
publicclassControl
{
publicdelegatevoidSomeHandler(objectsender,EventArgse);
publiceventSomeHandlersomeevent;
publicControl(){
this.someevent+=newSomeHandler(PrintStr);
this.someevent+=newSomeHandler(PrintInt);
}
publicvoidReadStr(){
EventArgse=newEventArgs();
someevent(this,e);
}
privatevoidPrintStr(objectsender,EventArgse)
{
MessageBox.Show("我就是陈太汉!,陈晓玲就是我老婆","代理");
}
privatevoidPrintInt(objectsender,EventArgse)
{
MessageBox.Show("你好,我就是陈太汉!,陈太汉就是我,哈哈哈哈哈","代理");
}
}
}
namespaceDelegateTest
{
publicclassContainer
{
Controlcontrol=newControl();
publicContainer(){
control.someevent+=newControl.SomeHandler(DelegateC);
control.ReadStr();
}
privatevoidDelegateC(objectsender,EventArgse)
{
MessageBox.Show("代理陈晓玲","代理");
}
}
}