这两天一直在研究事件,刚刚通过自己的理解写了一个事件的小程序,只是表达对于事件的逻辑理解,请各位老师看看是否正确。以下是模拟一个音乐播放器按钮的例子。
//播放器
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);
}
}
}事件
//播放器
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);
}
}
}事件
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货