public class Class1
{
public void AddSendTextEventHandler(SendTextEventHandler st)
{
SendTextEvent += st;
}
public event SendTextEventHandler SendTextEvent;
public void doall()
{
SendTextEvent("1");
//為了讓效果看的明顯,故方法休眠1秒鐘
System.Threading.Thread.Sleep(1000);
do1();
SendTextEvent("2");
System.Threading.Thread.Sleep(1000);
do2();
SendTextEvent("3");
System.Threading.Thread.Sleep(1000);
do3();
SendTextEvent("4");
System.Threading.Thread.Sleep(1000);
do4();
}
void do1()
{ }
void do2()
{ }
void do3()
{ }
void do4()
{ }
}
public delegate void SendTextEventHandler(string text);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
LoadData();
}
void LoadData()
{
Class1 c = new Class1();
//Form2為一個普通表單類,為局部變數,主要是為了用其Text屬性顯示SendTextEvent傳過來的text
Form2 f = new Form2();
f.Show();
//方法1,通過原始的方法註冊委派物件(事件)
c.SendTextEvent += new SendTextEventHandler(c_SendTextEvent);
//方法2,利用匿名委託
c.SendTextEvent += delegate(string text)
{
//注意,f為局部變數,可以在這裡操作
f.Text = text;
};
c.doall();
}
//方法2的原始委託註冊方式
void c_SendTextEvent(string text)
{
//注意,如果是這種原始方式,Form2的對象f要通過別的方式如建立全域變數來處理器Text屬性
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
}
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}