C#入门到精通之C#Winform实现动态生成控件
小职 2021-03-16 来源 :UP技术控 阅读 1104 评论 0

摘要:本文主要介绍了C#入门到精通之C#Winform实现动态生成控件,通过具体的内容向大家展现,希望对大家C#的学习有所帮助。

本文主要介绍了C#入门到精通之C#Winform实现动态生成控件,通过具体的内容向大家展现,希望对大家C#的学习有所帮助。

C#入门到精通之C#Winform实现动态生成控件


概述

 

动态创建添加控件,可以在一个大容器里一次性放入多个控件。例:根据文本框中输入的数字 给flowLayoutPanel1 添加多少个button。窗体设计中,需要什么控件就从工具箱里拖出一个控件“挂”在窗体上。其实,窗体上的控件,不但可以“拖”,还可以用代码动态生成。动态生成控件,对需要相同的大量的控件还是比较有用的。

 

实现方式

 

1、加载数据,往panel添加Label 控件。

 

private void LoadRoomType()

        {

            DataTable dtRoomType = _roomTypeBLL.GetModelList("", "Code");

            pnlRoomType.Controls.Clear();

            int padding = 5;

            int x = padding, y = padding;

            pnlRoom.Controls.Clear();

            foreach (DataRow item in dtRoomType.Rows)

            {

                Label lbl = new Label();

                lbl.Text = string.Format("{0}", item["Names"]);

                lbl.Image = btnRoomType.Image;

                lbl.Cursor = Cursors.IBeam;

                lbl.TextAlign = btnRoomType.TextAlign;

                lbl.Font = btnRoomType.Font;

                lbl.ForeColor = btnRoomType.ForeColor;

                lbl.Size = btnRoomType.Size;

                lbl.Location = new Point(x, y);

                lbl.Tag = item;

                lbl.Click += new EventHandler(lbl_Click);

                lbl.MouseEnter += new EventHandler(lbl_MouseEnter);

                lbl.MouseLeave += new EventHandler(lbl_MouseLeave);

                x += lbl.Width + padding;

                if (x + lbl.Width > pnlRoomType.Width)

                {

                    x = padding;

                    y += lbl.Height + padding;

                }

                pnlRoomType.Controls.Add(lbl);

            }

            int height = y + (x != padding ? pnlRoomType.Height : 0) + padding;

            int addHeight = height - pnlRoomType.Height;

            pnlRoom.Top = pnlRoom.Top + addHeight;

            pnlRoom.Height = pnlRoom.Height - addHeight;

            pnlRoomType.Height = pnlRoomType.Height + addHeight;

            if (dtRoomType.Rows.Count > 0)

                LoadRoomByTypeID(dtRoomType.Rows[0], 0);

        }

2、定义Label 的点击事件。

 

void lbl_Click(object sender, EventArgs e)

        {

            try

            {

                Label lbl = sender as Label;

                DataRow row = lbl.Tag as DataRow;

                LoadRoomByTypeID(row, 0);

                

            }

            catch (Exception ex)

            {

 

               ;

            }

 

        }

3、定义Label 的鼠标事件。

 

#region lbl_MouseLeave

        void lbl_MouseLeave(object sender, EventArgs e)

        {

            Label lbl = sender as Label;

            lbl.Font = new Font(lbl.Font, FontStyle.Regular);

            lbl.Cursor = Cursors.Default;

            lbl.ForeColor = btnRoomType.ForeColor;

        }

        #endregion

        #region lbl_MouseEnter

        void lbl_MouseEnter(object sender, EventArgs e)

        {

            Label lbl = sender as Label;

            lbl.Font = new  Font(lbl.Font, FontStyle.Bold);

            lbl.Cursor = Cursors.IBeam;

        }

        #endregion

效果

 C#入门到精通之C#Winform实现动态生成控件


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取学习教程,开发工具,代码大全,参考书籍

C#入门到精通之C#Winform实现动态生成控件 

 


本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程