//事件的定义
//访问修饰符 event 委托名称 事件名称;
1、自定义事件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
//事件
//访问修饰符 event 委托名称 事件名称;
namespace EventStudy
{
public delegate void DelTest();//定义一个委托
class Program
{
static void Main(string[] args)
{
PlayMusic playMusic = new PlayMusic("学猫叫");
playMusic.eventTest+=playMusic_eventTest;//注册事件
playMusic.PlayMusicMethod();
}
private static void playMusic_eventTest()
{
//throw new NotImplementedException();
Console.WriteLine("歌曲放完了");
}
}
class PlayMusic
{
//定义事件
public event DelTest eventTest;
public string Name { get; set; }
public PlayMusic(string name) {
this.Name = name;
}
public void PlayMusicMethod()
{
Console.WriteLine("{0}正在播放",this.Name);
Thread.Sleep(3000);
if(eventTest!=null)
{
eventTest();//调用事件
}
}
}
}
2、使用EventHandler 定义事件//EventHandler本质是一个委托
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Access a = new Access();
//a.Get();
}
//事件就是类型安全的委托 只能在类的内部去调用
//sender 就是触发这个事件的对象
//e 就是执行这个事件所需要的数据资源
private void button1_Click(object sender, EventArgs e)
{
PlayMusic playMusic = new PlayMusic("吻别");
//注册要执行的事件
playMusic.EventPlayOver+=playMusic_EventPlayOver;
playMusic.PlayMusicMethod();
}
private void playMusic_EventPlayOver(object sender, EventArgs e)
{
PlayMusic p = sender as PlayMusic;
Console.WriteLine("{0}播放完毕",p.Name);
//throw new NotImplementedException();
}
}
class PlayMusic
{
public event EventHandler EventPlayOver;//EventHandler本质是一个委托
public string Name { get; set; }
public PlayMusic(string name)
{
this.Name = name;
}
public void PlayMusicMethod()
{
Console.WriteLine("{0}开始播放",this.Name);
Thread.Sleep(3000);
if (EventPlayOver!=null)
{
// EventArgs e = new EventArgs();
EventPlayOver(this, new EventArgs());
}
}
}
}