/*
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-17
* Time: 15:34
*
* 事件2
*/
using System ;
using System .Windows .Forms ;
class Test
{
static void Main()//入口函數
{
Form frm=new Form ();//建立一表單
frm.Text ="我的表單";
Button btn1=new Button ();//建立按鈕1
btn1.Text ="未點擊按鈕1";
btn1.Dock =DockStyle.Left;
btn1.Click +=new EventHandler (btn1_clicked);//添加事件處理代理,btn1_clicked為自訂的函數名,當點擊按鈕的時候執行btn1_clicked中的代碼,這就是代理的概念
frm.Controls .Add (btn1);//把按鈕加入到表單中
frm.ShowDialog ();
}
public static void btn1_clicked(object sender,System.EventArgs e)//代理事件的自訂方法,與btn1.Click事件勾連,注意裡面的參數的寫法
{
Button btn=(Button)sender;//sender為事件來源控制項,e為事件來源資料。這裡用顯式轉換
btn.Text ="已點擊按鈕1";
Button btn2=new Button ();
btn2.Text ="未點擊按鈕2";
btn2.Dock =DockStyle.Right ;
btn2.Click +=new EventHandler (btn2Click);
System.Windows .Forms .Control c=btn.Parent ;//其中btn.Parent擷取btn的父表單,即已經執行個體化了的frm表單
c.Controls .Add (btn2);//把btn2按鈕也加入frm表單
}
public static void btn2Click(object sender,System.EventArgs e)//代理事件的自訂方法,與btn2.click勾連,同上寫法
{
Button btn=(Button)sender;
btn.Text ="已點擊按鈕2";
Button btn3=new Button ();
btn3.Text ="建立按鈕3";
btn3.Dock =DockStyle.Fill ;
System.Windows .Forms .Control c=btn.Parent ;
c.Controls .Add (btn3);
}
}運行結果如下: