C#中怎么使用Winform动态生成控件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
实现方式
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#中怎么使用Winform动态生成控件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。