您现在的位置是:亿华云 > IT科技
C#Winform怎样实现动态生成控件
亿华云2025-10-09 01:17:44【IT科技】9人已围观
简介本文转载自微信公众号「UP技术控」,作者conan5566 。转载本文请联系UP技术控公众号。概述动态创建添加控件,可以在一个大容器里一次性放入多个控件。例:根据文本框中输入的数字 给flowLayo
本文转载自微信公众号「UP技术控」,样实作者conan5566 。现动转载本文请联系UP技术控公众号。态生
概述
动态创建添加控件,成控可以在一个大容器里一次性放入多个控件。样实例:根据文本框中输入的现动数字 给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效果
很赞哦!(2694)
相关文章
- 其次,一般域名注册有一个获取密码的按钮,域名注册商点击后会向您发送密码。在得到域名注册商发送的密码后,将其传输到域名服务提供商网站,然后输入密码,此时域名呈现申请状态。提交申请后,原注册人通常会向您发送一封电子邮件,询问您是否同意转让。此时,您只需点击同意转移按钮,域名注册商就可以成功转移。
- Vite 的插件机制:插件应用和基本使用
- 如何动态导入ECMAScript模块?
- Java 这个高级特性,很多人还没用过!
- 为了避免将来给我们的个人站长带来的麻烦,在选择域名后缀时,我们的站长最好省略不稳定的后缀域名,比如n,因为我们不知道策略什么时候会改变,更不用说我们将来是否还能控制这个域名了。因此,如果站长不是企业,或者有选择的话,如果不能选择域名的cn类,最好不要选择它。
- React要更新,就像渣男会变心
- 一文学会核心服务OOM!
- 7.1 万 Star!超实用,60 多种动画效果的 CSS 库
- 域名和网址一样吗?域名和网址有什么区别?
- 一篇带给你Go语言的并发