一種「方法的指標」,利用委派可以間接叫用方法。主要應用在「事件的驅動」
如何使用:
1.宣告Delegate
2.用new實體化
3.Invoke叫用函式
委派其實是事件的基礎,我們可以使用委派來呼叫不同的事件,例如:控制項的事件,而且委派事件在控制項的事件應用非常重要,透過委派可以觸發「其他控制項事件」。

public delegate void abc(object sender, EventArgs e); //放在class裡面
private void button1_Click(object sender, EventArgs e)
{
  abc btn = button2_Click; //不用加( )
  btn.Invoke(sender,e);
}
private void button_Click(object sender, EventArgs e)
{
  MessageBox.Show("第二顆按鈕被按下");
}
這樣的結果就是無論是按下button1還是button2按鈕都會顯示「第二顆按鈕被按下」

多重傳送委派
它的精神是:單一事件引發多個事件。
可以利用「+」與「-」號來完成新增與刪除。
什麼情境下需要同時引發多個事件? 例如:警報系統,當地震來時,一定是透過廣播的方式,來同時觸發整個社區的喇叭。
namespace Multicast_delegate_ex2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public delegate void Del(object sender, EventArgs e);

        private void btn_A_Click(object sender, EventArgs e)
        {
            MessageBox.Show("傑克:地震來了!珍妮佛!");
        }

        private void btn_B_Click(object sender, EventArgs e)
        {
            MessageBox.Show("珍妮佛:真的搖晃的很厲害!傑克!");
        }

        private void btn_C_Click(object sender, EventArgs e)
        {
            MessageBox.Show("湯姆:別聊天了!再不逃恐怕小命不保!");
        }

        private void btn_earthquake_Click(object sender, EventArgs e)
        {
            MessageBox.Show("地震系統: 地震發生請社區住戶小心");
            Del alarm = btn_A_Click;
            alarm = alarm + btn_B_Click;
            alarm += btn_C_Click;
            alarm.Invoke(sender, e);
        }
    }
}

arrow
arrow
    全站熱搜

    羅 朝淇 發表在 痞客邦 留言(0) 人氣()