c# windows 动态生成CheckBox控件

最近有一个客户要求Mapping的打标标是00-99中可选的方式。由于控件有点多,我不想手动去拖100个控件。所以想到了动态添加。

效果图

代码

复制代码
/// <summary>
        /// 生成 CheckBox
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="count"></param>
        private void GenerateCheckBox(Panel panel, int count)
        {
            panel.Controls.Clear();
            int startIntervalX = 10;
            int startIntervalY = 10;
            int rowIndex = 0;
            int colIndex = 0;
            for (int i = 0; i < count; i++)
            {
                //过滤不打标的
                if (!CommonDefine.MappingNotMarkStr.Contains(i.ToString("00")))
                {
                    var chkObj = new CheckBox();
                    chkObj.Text = i.ToString("00");
                    chkObj.Tag = i.ToString("00");
                    chkObj.Width = 40;
                    chkObj.Height = 20;
                    //判断是否已选择 打标的
                    chkObj.Checked = CommonDefine.MappingMarkStr.Contains(chkObj.Text);
                    chkObj.Click += ChkObj_Click;
                    chkObj.Location = new Point(colIndex * chkObj.Width + startIntervalX,
                                                rowIndex * chkObj.Height + startIntervalY);
                    panel.Controls.Add(chkObj);
                    colIndex++;
                    if (colIndex == 10)
                    {
                        colIndex = 0;
                        rowIndex++;
                    }
                }
            }
        }

        private void ChkObj_Click(object sender, EventArgs e)
        {
            var checkBox = (sender as CheckBox);
            if (checkBox.Checked)
            {
                //将用户的选择记录并保存到配置中
                CommonDefine.MappingMarkStr += checkBox.Text + ",";
            }
        }

调用

复制代码
GenerateCheckBox(this.panelMappingMark, 100);
相关推荐
还是大剑师兰特16 分钟前
C#面试题及详细答案120道(86-95)-- 进阶特性
c#·大剑师
星释23 分钟前
Rust 练习册 :深入探索XOR加密与流密码
开发语言·网络·rust
郝学胜-神的一滴28 分钟前
Effective STL 第9条:C++容器元素删除技巧详解
开发语言·c++·程序人生·stl
提娜米苏28 分钟前
Bash Shell脚本学习——唇读数据集格式修复脚本
开发语言·学习·bash
larance31 分钟前
python中的鸭子类型
开发语言·python
丙寅1 小时前
微信小程序反编译遇到 TypeError: _typeof3 is not a function
开发语言·javascript·ecmascript
醇氧1 小时前
MAC 安装openJDK8
java·开发语言
海阔天空在前走1 小时前
JAVA中六种策略模式的实现
java·开发语言·策略模式
青衫码上行1 小时前
【Java Web学习 | 第十篇】JavaScript(4) 对象
java·开发语言·前端·javascript·学习
禁默1 小时前
基于Rust实现爬取 GitHub Trending 热门仓库
开发语言·rust·github