您的位置:首页 > 编程语言 > C#

C# 中的动态创建组件(属性及事件)的实现思路及方法

2013-12-17 15:46 1001 查看
using   System   ; using   System.Drawing   ; using   System.Collections   ; using   System.ComponentModel   ; using   System.Windows.Forms   ; using   System.Data   ; namespace   DynamicControls { public   class   Form1   :   Form { private   Button   btnAdd   ; private   System.ComponentModel.Container   components   =   null   ; private   Button   txtAdd   ; //给产生的按钮定义一个数量计算器 private   int   counter   ; //给产生的按钮定义相对位置的纵坐标 private   int   locY   ; //给产生的文本框定义一个数量计算器 private   int   counter01   ; //给产生的文本框定义相对位置的纵坐标 private   int   locY1   ; public   Form1   (   ) { InitializeComponent   (   )   ; //初始化产生的按钮何文本框位置的纵坐标 locY   =   this.btnAdd.Location.Y   ; locY1   =   this.txtAdd.Location.Y   ; }

//清除在程序中使用到的资源 protected   override   void   Dispose   (   bool   disposing   ) { if   (   disposing   ) { if   (   components   !=   null   )   { components.Dispose   (   )   ; } } base.Dispose   (   disposing   )   ; }

private   void   InitializeComponent   (   ) { this.btnAdd   =   new   Button   (   )   ; this.txtAdd   =   new   Button   (   )   ; this.SuspendLayout   (   )   ;

this.btnAdd.FlatStyle   =   FlatStyle.Popup   ; this.btnAdd.Location   =   new   System.Drawing.Point   (   8   ,   16   )   ; this.btnAdd.Name   =   "btnAdd "   ; this.btnAdd.TabIndex   =   0   ; this.btnAdd.Text   =   "生成按钮! "   ; this.btnAdd.Click   +=   new   System.EventHandler   (   this.btnAdd_Click   )   ;

this.txtAdd.FlatStyle   =   FlatStyle.Popup   ; this.txtAdd.Location   =   new   System.Drawing.Point   (   108   ,   16   )   ; this.txtAdd.Name   =   "txtAdd "   ; this.txtAdd.TabIndex   =   1   ; this.txtAdd.Text   =   "生成文本框! "   ; this.txtAdd.Click   +=   new   System.EventHandler   (   this.txtAdd_Click   )   ;

this.AutoScaleBaseSize   =   new   System.Drawing.Size   (   5   ,   13   )   ; this.ClientSize   =   new   System.Drawing.Size   (   292   ,   273   )   ; this.Controls.Add   (   btnAdd   )   ; this.Controls.Add   (   txtAdd   )   ; this.Name   =   "Form1 "   ; this.Text   =   "在Visual   C#中如何动态产生组件! "   ; this.ResumeLayout   (   false   )   ;  

} static   void   Main   (   )   { Application.Run   (   new   Form1   (   )   )   ; } private   void   btnAdd_Click   (   object   sender   ,   System.EventArgs   e   ) { //按钮数量计算器在每次按钮按动后加 "1 " counter   +=   1   ; //对要产生的按钮的纵坐标的相对位置是前一个产生按钮的相对位置的纵坐标加 "3 " locY   +=   this.btnAdd.Height   +   3   ; //创建一个新的Button组件 Button   myButton   =   new   Button   (   )   ; //设定他的名称和Text属性,以及产生的位置 myButton.Name   =   "Button   "   +   counter   ; myButton.Text   =   "按钮   "   +   counter   ; myButton.Location   =   new   Point   (   btnAdd.Location.X   ,   locY   )   ;  

//为产生的新的Button组件设定事件,本文中为产生的按钮设定了三个事件 myButton.MouseEnter   +=   new   System.EventHandler   (   this.btn_MouseEnter   )   ; myButton.MouseLeave   +=   new   System.EventHandler   (   this.btn_MouseLeave   )   ; myButton.Click   +=   new   System.EventHandler   (   this.btn_Click   )   ; //在窗体中显示此按钮 this.Controls.Add   (   myButton   )   ; }

private   void   txtAdd_Click   (   object   sender   ,   System.EventArgs   e   ) { //文本框数量计算器在每次按钮按动后加 "1 " counter01   +=   1   ; //对要产生的文本框的纵坐标的相对位置是前一个产生按钮的相对位置的纵坐标加 "3 locY1   +=   this.txtAdd.Height   +   3   ; //创建一个新的TextBox组件 TextBox   myBox   =   new   TextBox   (   )   ; //设定他的名称和Text属性,以及产生的位置 myBox.Name   =   "TextBox   "   +   counter01   ; myBox.Text   =   "文本框   "   +   counter01   ; myBox.Location   =   new   Point   (   txtAdd.Location.X   ,   locY1   )   ;   //为产生的新的TextBox组件设定事件,本文中为产生的文本框设定了一个事件 myBox.Click   +=   new   System.EventHandler   (   this.btn_Click   )   ; //在窗体中显示此文本框 this.Controls.Add   (   myBox   )   ; } private   void   btn_MouseEnter   (   object   sender   ,   System.EventArgs   e   ) { //出箱 Button   currentButton   =   (   Button   )   sender   ; //设定按钮的背景色 currentButton.BackColor   =   Color.Red   ; }

private   void   btn_MouseLeave   (   object   sender   ,   System.EventArgs   e   ) { //出箱 Button   currentButton   =   (   Button   )   sender   ; currentButton.BackColor   =   Control.DefaultBackColor   ; }

private   void   btn_Click   (   object   sender   ,   System.EventArgs   e   ) { if   (   sender.GetType   (   )   ==   typeof   (   Button   )   )   { Button   control   =   (   Button   )   sender   ; MessageBox.Show   (   control.Text   +   "被按动了! "); } else   { TextBox   control   =   (   TextBox   )   sender   ;   MessageBox.Show   (   control.Text   +   "被按动了! "   )   ; } }

} }  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  动态创建组件 C#