利用事件“时刻关注”
事件的主要特点是一对多关联,即一个事件源可以有多个响应者。在具体实现上,事件建立于委托的基础之上,.NET Framework的事件处理机制是基于多路委托实现的。事件通过关键字event定义,只能由事件源对象自己引发,不允许外界引发。
1.主窗口->从窗口:事件建立于委托的基础之上,既然可以用委托实现消息的广播,那么一定能用事件机制实现“消息广播”。主窗体定义一个MyShow事件,从窗体对象响应之。思路如下:
private delegate void ShowDelegate(int num); //自定义一个委托
private event ShowDelegate MyShow; //主窗体定义一个MyShow事件:
private frmOther m_frmOther = null;
private void m_btn_ShowForm_Click(object sender, EventArgs e)
{
m_frmOther = new frmOther();
m_frmOther.Show();
m_frmOther.MyDisplay += new frmOther.DisplayDelegate(__Display); //从窗体实现事件响应方法的挂接
MyShow += new ShowDelegate(m_frmOther.__Show); //主窗体实现事件响应方法的挂接
}
private void m_hScrollBar_Scroll(object sender, ScrollEventArgs e)
{
MyShow(m_hScrollBar.Value); //响应事件,显示滚动条数