这两天一直在研究事件,刚刚通过自己的理解写了一个事件的小程序,只是表达对于事件的逻辑理解,请各位老师看看是否正确。以下是模拟一个音乐播放器按钮的例子。
//播放器
namespace _音乐播放器
{
    delegate void PlayEventHandler(object sender, SongEventArgs e);
    class Player
    {        public Player(string name)
        {
            this.name = name;
        }        
        public event PlayEventHandler PlayEvent;
        //public event EventHandler PlayEvent;
        private string name;        public string Name
        {
            get { return name; }
            set { name = value; }
        }        public void Play()
        {
            
            if (PlayEvent != null)
            {
                SongEventArgs e = new SongEventArgs(this.name);
                PlayEvent(this, e);
            }
        }
    }
}//歌曲
namespace _音乐播放器
{
    class SongEventArgs:EventArgs
    {
        public SongEventArgs(string name)
        {
            this.name = name;
        }
        private string name;        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }
}//按钮的功能
namespace _音乐播放器
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void btnPlay_Click(object sender, EventArgs e)
        {
            Player player = new Player("真的爱你");
            player.PlayEvent += new PlayEventHandler(player_PlayEvent);
            player.Play();
        }        void player_PlayEvent(object sender, SongEventArgs e)
        {
            MessageBox.Show("正在播放"+e.Name);
        }        
        private void btnStop_Click(object sender, EventArgs e)
        {
            Player player = new Player("真的爱你");
            player.PlayEvent += new PlayEventHandler(player_PlayEvent1);
            player.Play();
        }                void player_PlayEvent1(object sender, SongEventArgs e)
        {
            MessageBox.Show("停止播放" + e.Name);
        }        private void btnAdv_Click(object sender, EventArgs e)
        {
            Player player = new Player("真的爱你");
            player.PlayEvent += new PlayEventHandler(player_PlayEvent2);
            player.Play();
        }                
        void player_PlayEvent2(object sender, SongEventArgs e)
        {
            MessageBox.Show("快进" + e.Name);
            
        }
    }
}事件