扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:阿虎 来源:Yesky 2007年11月14日
关键字:
图01:程序中动态创建了组件 |
图02:单击创建的按钮的结果图 |
图03:单击创建的文本框的结果图 |
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 + "被按动了!" ) ; } } } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者