C#.NET中的事件2

/*
 * 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);
    }
}

运行结果如下:


posted @ 2009-08-17 16:11  爱生活,爱GIS  阅读(262)  评论(0编辑  收藏  举报