本文转载自微信公众号「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
效果
1.现在赶作业是一种时尚,所以我很赶得上潮流。 2.我房间里堆满了情人节卡片,...
3月8日消息,据外媒报道,物联网研究机构IoTAnalytics称,三分之一的制造商正计...
2020年注定是个不平凡的一年,新冠肺炎疫情全球蔓延,对全球经济发展、科技进步...
1.话费没了,流量没了,短信没了,寒假没了,作业还有。 2.别紧张,我又不是什么...
A公司在华为云中购买了多种资源,公司中有多个职能团队,这些职能团队需要使用一...
文章已收录Github精选,欢迎Star: https://github.com/yehongzhi/learningSumma...
目标 在仿真理论中,生成随机变量是最重要的构建块之一,而这些随机变量大多是由...
公司网站 域名 空间多少钱?公司搭 建网站 缺少不了域名和空间,具体需要多少钱...
如果当前云服务器系统盘容量不能满足您的存储需要,您可以在购买了云服务器之后...
域名 过期多少天可以注册?域名过期大概60天以后会被注册局删除,删除之后就可以...