控件的动态生成与操作

事件的三要素:事件源,事件数据,事件处理程序

例如:

//sender-事件源,EventArgs-事件数据,函数体就是处理程序
private void button1_Click(object sender, EventArgs e)
{
Button btn = sender as Button; //把事件源具像化。
MessageBox.Show(btn.Text); //显示事件源的文本。
}

案例:动态生成一个按钮布局,并作出一个模拟抽奖的过程

  private void Form4_Load(object sender, EventArgs e)
        {
            BuildLayout();//构建网格布局
            AddButtonToTableLayout(); //向网格布局中加按钮
        }
        private void AddButtonToTableLayout()
        {
            Random rand = new Random();
            for (int i = 0; i < 400; i++)
            {
                //动态构建按钮
                Button btn = new Button();
                //初始化按钮的属性
                btn.Text = i.ToString();
                btn.Dock = DockStyle.Fill;
                tableLayoutPanel1.Controls.Add(btn);
                if (rand.Next(100) % 3 == 0)
                {
                    btn.Tag = 1;
                }
                else if (rand.Next(100) % 5 == 0)
                {
                    btn.Tag = 100;
                }
                else if (rand.Next(100) % 10 == 0)
                {
                    btn.Tag = 500;
                }
                else
                {
                    btn.Tag = 0;
                }
                //初始化按钮的事件
                btn.Click += btn_Click;
            }
        }

        void btn_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            int n = (int)btn.Tag;
            if (n != 0)
            {
                btn.BackColor = Color.Red;
                btn.ForeColor = Color.Yellow;
                btn.Text = n.ToString();
                btn.Font = new Font("黑体", 12, FontStyle.Bold);
            }
            btn.Enabled = false;
        }

        private void BuildLayout()
        {
            //清掉原来的两列
            tableLayoutPanel1.ColumnStyles.Clear();
            //添加20个新列
            tableLayoutPanel1.ColumnCount = 20;
            for (int i = 0; i < 20; i++)
            {
                ColumnStyle style = new ColumnStyle(SizeType.Percent, 5);
                tableLayoutPanel1.ColumnStyles.Add(style);
            }
            //添掉原来的两行
            tableLayoutPanel1.RowStyles.Clear();
            //添加20个新行
            tableLayoutPanel1.RowCount = 20;
            for (int i = 0; i < 20; i++)
            {
                RowStyle style = new RowStyle(SizeType.Percent, 5);
                tableLayoutPanel1.RowStyles.Add(style);
            }
        }
时间: 2024-11-08 23:07:19

控件的动态生成与操作的相关文章

用户控件、动态创建添加

使用用户控件: 项目右键添加,用户控件,选择用户控件cs 在生成的项目中用设计编辑,点击菜单栏生成,生成解决方案,然后用户控件就可以使用了 制作简单的qq窗口,根据数据库自动添加数据 制作用户控件: 实体类:(qq,haoyou) qq: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QQ.App_Code { public class qq { pu

vc 在edit控件中动态插入数据滚动显示

内存从网上论坛摘抄整理 思路:给控件设置多行属性,设置垂直滚动条,Auto Vscroll设置为true,放入文本后把插入点设置到末尾 pEdit->LineScroll(pEdit->GetLineCount()); 滚动条滚动到最下端 int len  = pEdit->GetWindowTextLength(); pEdit->SetSel(len,-1,true); //定位光标到内容末尾pEdit->ReplaceSel("12121212");

activePDF Architect WBE 控件可动态产生自定义PDF文件,控制布局和页面元素

activePDF Architect WBE 控件提供了强健的API用于即时地构建完美的PDF报表.PDF表单等,可以添加文本.图像.表格.注释.表单字段等,并且可以完全控制格式和布局位置,直接从你应用程序产生高质量的PDF文档. 具体功能: 动态产生自定义PDF文件,控制布局和页面元素 从头开始构建PDF,使用强健的表格控件和其他工具创建专业的适合你商业标准的布局 整合交互式元素到PDF里,如超链接.表单字段.注释等 直接从应用程序或者数据库数据,快速且简便地创建大批量PDF文件 使用相似的

ArcGIS for Android地图控件的5大常见操作

原文地址: ArcGIS for Android地图控件的5大常见操作 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/7801467   GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作)

iOS开发UI篇—自定义瀑布流控件(蘑菇街数据刷新操作) 一.简单说明 使用数据刷新框架: 该框架提供了两种刷新的方法,一个是使用block回调(存在循环引用问题,_ _weak),一个是使用调用. 问题:在进行下拉刷新之前,应该要清空之前的所有数据(在刷新数据这个方法中). 移除正在显示的cell: (1)把字典中的所有的值,都从屏幕上移除 (2)清除字典中的所有元素 (3)清除cell的frame,每个位置的cell的frame都要重新计算 (4)清除可复用的缓存池. 该部分的代码如下: 1

用户控件,动态创建添加用户控件

用户控件的制作步骤 1,新建一个项目,文件>新建>项目. 2,添加>新建项>用户控件.文件类型为.cs 使用用户控件 在用户控件设计业点击工具栏中的生成项,选择第一项生成解决方案,或直接点F6: 生成成功后在windows窗体的工具栏最顶端就会显示此用户控件 动态添加控件 输入一个值为n,点击按钮,动态生成n个按钮,并编号号 private void button1_Click(object sender, EventArgs e) { //先获取用户输入的是几 int count

WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日

好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修改使用 动态创建添加控件: 1 //定义控件类型 2 Button btn = new Button(); 3 //控件名称……等属性,也可以直接绑定各种事件 4 btn.Name = "mybutton" + i.ToString(); 5 //添加到窗体 this 可以替换为 容器控件 6 this.Co

winform用户控件、动态创建添加控件、timer控件、控件联动

用户控件:(1) 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗体中添加, 将其实例化,然后添加到想要添加的容器的Control集合中. 动态创建添加控件: 配合上面的用户控件,实现类似QQ界面的打开自动加载好友昵称和签名 public Form1() { InitializeComponent(); //将当前登陆的账号的全部好友信息取出来 List<A

zTree 树形控件 ajax动态加载数据

很久没搞过树形控件了 , 再次接触看官网文档有点没懂,于是在网上找了个代码copy上,但数据是写死的,就想这在用ajax异步取出数据替换,下面是js代码 <SCRIPT type="text/javascript" > //定义全局ztree数据 var zNodes; /* 初始化ztree数据 */ function initZtree(){ $.ajax({ type: "GET", url: "<%=request.getCont