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);
相关推荐
ch.ju4 小时前
Java Programming Chapter 3——Default value of array
java·开发语言
aini_lovee4 小时前
STM32 上实现 SD 卡读取 JPEG 解码 TFT 显示
开发语言·stm32
谙弆悕博士4 小时前
【附C语言源码】C语言 栈结构 实现及其扩展操作
c语言·开发语言·数据结构·算法·链表·指针·
njsgcs4 小时前
c# solidworks GetPartBox无法获得正确实体边界框原因
开发语言·c#·solidworks
bandaoyu4 小时前
【CUDA】store/load普通访存 vs 非临时(Non-Temporal)访存
java·开发语言·redis
天天进步20154 小时前
透视 Mission Control 源码:如何构建高性能的 Agent 实时监控架构?
开发语言
apple爱加油4 小时前
线程相关_线程池原理
开发语言·python
小短腿的代码世界4 小时前
Qt_Qwt深度解析:从源码到工业级性能优化
开发语言·qt·性能优化
charlie1145141914 小时前
基于开源项目的现代C++实战——OnceCallback 实战(五):then 链式组合
开发语言·c++·开源
Anastasiozzzz4 小时前
深入研究Java Agent生态:SpringAI 与 SpringAIAlibaba核心能力、架构演进与全场景对比研究
java·开发语言·架构