事件有5个元素
Timer Elapsed 事件示例
namespace Event
{
class Program
{
static void Main(string[] args)
{
Timer timer = new Timer();//timer是事件拥有者
timer.Interval = 1000;
Boy boy = new Boy();//实例化事件响应者boy
timer.Elapsed += boy.Action;
timer.Elapsed += girl.Action;//+=表示订阅事件 跟上事件响应者的事件处理器
timer.Start();
Console.ReadLine();
}
}
class Boy
{
internal void Action(object sender, ElapsedEventArgs e)
{
Console.WriteLine("Jump!");
}
}
class girl
{
internal static void Action(object sender, ElapsedEventArgs e)
{
Console.WriteLine("Sing!");
}
}
}
此程序将每秒触发Elapsed事件,事件订阅了boy和girl的事件处理器,因此每秒将会打印一次方法中的内容
事件拥有者和事件响应者是完全不同的两个对象
namespace EventExample
{
class Program
{
static void Main(string[] args)
{
//form是事件的拥有者
Form form = new Form();
//事件的响应者
Controller controller = new Controller(form);
form.ShowDialog();//让事件停在此处
}
}
class Controller
{
private Form form;
public Controller(Form form)
{
if(form!=null)
{
//将form添加给实例字段
this.form = form;
//访问this.form的Click事件,并为其添加了一个事件处理器
//事件的订阅
this.form.Click += this.FormCliked;
}
}
//事件的处理器
private void FormCliked(object sender, EventArgs e)
{
this.form.Text = DateTime.Now.ToString();
}
}
}
效果:点击窗体会显示时间