当前位置: 首页 > article >正文

C# winodw TableLayoutPanel 料盒生产状态UI自动生成

料盒生产状态UI自动生成,效果如下

以前公司项目的这些都是手动拖控件做的。每个设备的料盒数量不一样,层数不一样时都要发好几个小时去改相关细节和代码。上次改了一次。这个又来了。上次就有想法做成根据参数自动生成。但项目时间有限有没有去深入思路和深度。这次发了几个小时加班完成了。

代码:


/// <summary>
        /// 表头的全选 复选框
        /// </summary>
        List<CheckBox> checkBoxAllList = new List<CheckBox>();

        /// <summary>
        /// 芯片生产状态标签
        /// </summary>
        Label[,] boxMarkContent = new Label[8, 25];//[料盒数量,料盒层数]

        /// <summary>
        /// 芯片选中列表
        /// [料盒索引,层索引]
        /// </summary>
        CheckBox[,] boxChipCheckArray = new CheckBox[3, 25];//[料盒数量,料盒层数]

/// <summary>
        /// 初始化 料盒UI
        /// </summary>
        private void initBoxUI()
        {
            //料盒索引
            int nBoxIndex = 0;
            //芯片层 索引
            int nChipIndex = 0;

            //AxisTestForm.BOX_COUNT 料盒数量
            this.tableLayoutPanel2.Controls.Clear();
            this.tableLayoutPanel2.ColumnStyles.Clear();//清除默认样式 这个很重要
            this.tableLayoutPanel2.RowStyles.Clear();//清除默认样式 这个很重要

            this.tableLayoutPanel2.Size = new Size(344, 651);
            this.tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 27F));

            this.tableLayoutPanel2.ColumnCount = 1 + AxisTestForm.BOX_COUNT * 2;
            this.tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 35F));
            //列宽
            double columnWidth = 100.0 / AxisTestForm.BOX_COUNT;
            //列索引
            int columnIndex = 0;
            //添加列
            for (int i = 0; i < AxisTestForm.BOX_COUNT; i++)
            {
                columnIndex++;
                this.tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, (float)columnWidth));
                this.tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 30F));

                Label labelTitle = new Label();
                labelTitle.Anchor = AnchorStyles.Bottom;
                labelTitle.Margin = new Padding(4, 0, 4, 0);
                labelTitle.Name = "lblBoxTitle" + i;
                //labelTitle.TabIndex = 1;
                labelTitle.Text = "料盒" + (i + 1);
                labelTitle.TextAlign = ContentAlignment.MiddleCenter;

                this.tableLayoutPanel2.Controls.Add(labelTitle, columnIndex, 0);

                columnIndex++;

                CheckBox checkBoxAll = new CheckBox();
                checkBoxAll.Anchor = AnchorStyles.Left;
                checkBoxAll.AutoSize = true;
                checkBoxAll.Checked = true;
                checkBoxAll.CheckState = CheckState.Checked;
                checkBoxAll.Name = "checkBoxAll" + i;
                checkBoxAll.Tag = i;
                checkBoxAll.Size = new Size(24, 21);
                //checkBoxAll.TabIndex = 3;
                checkBoxAll.Text = " ";
                checkBoxAll.UseVisualStyleBackColor = true;
                checkBoxAll.CheckedChanged += new System.EventHandler(this.checkBoxAll_CheckedChanged);

                this.tableLayoutPanel2.Controls.Add(checkBoxAll, columnIndex, 0);
                checkBoxAllList.Add(checkBoxAll);
            }
            //行索引
            int rowIndex = 1;
            //行高
            double rowHeight = 100.0 / AxisTestForm.BOX_CHIPSCOUNT;
            //添加行
            for (int layerIndex = AxisTestForm.BOX_CHIPSCOUNT; layerIndex > 0; layerIndex--)
            {
                columnIndex = 0;
                this.tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, (float)rowHeight));
                if (layerIndex % 5 == 0)
                {
                    Label labelItemNo = new Label();
                    labelItemNo.AutoSize = true;
                    labelItemNo.BackColor = SystemColors.Control;
                    labelItemNo.Dock = DockStyle.Fill;
                    labelItemNo.Font = new Font("宋体", 10.5F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134)));
                    labelItemNo.Margin = new Padding(4, 1, 4, 1);
                    labelItemNo.Name = "label_"+ layerIndex;
                    labelItemNo.Size = new Size(27, 18);
                    //labelItemNo.TabIndex = 4;
                    labelItemNo.Text = layerIndex.ToString();
                    labelItemNo.TextAlign = ContentAlignment.MiddleCenter;
                    this.tableLayoutPanel2.Controls.Add(labelItemNo, 0, rowIndex);
                }
                nChipIndex = layerIndex - 1;
                columnIndex++;
                //根据料盒数量生成对应列
                for (int i = 0; i < AxisTestForm.BOX_COUNT; i++)
                {
                    Label labelItem = new Label();
                    labelItem.AutoSize = true;
                    labelItem.BackColor = SystemColors.ActiveCaptionText;
                    labelItem.Dock = DockStyle.Fill;
                    labelItem.Margin = new Padding(4, 1, 4, 1);
                    labelItem.Name = "labelItem_" + i + "_" + nChipIndex;
                    //labelItem.TabIndex = 2;
                    labelItem.TextAlign = ContentAlignment.MiddleCenter;
                    this.tableLayoutPanel2.Controls.Add(labelItem, columnIndex, rowIndex);
                    nBoxIndex = i;
                    //芯片生产状态标签对象
                    boxMarkContent[nBoxIndex, nChipIndex] = labelItem;

                    columnIndex++;

                    CheckBox checkBoxItem = new CheckBox();
                    checkBoxItem.Anchor = AnchorStyles.Left;
                    checkBoxItem.AutoSize = true;
                    checkBoxItem.Checked = true;
                    checkBoxItem.CheckState = CheckState.Checked;
                    checkBoxItem.Name = "checkBox" + i + "_" + nChipIndex;
                    checkBoxItem.Size = new Size(24, 14);
                    //checkBoxItem.TabIndex = 3;
                    checkBoxItem.Text = " ";
                    checkBoxItem.UseVisualStyleBackColor = true;
                    checkBoxItem.Enabled = false;
                    this.tableLayoutPanel2.Controls.Add(checkBoxItem, columnIndex, rowIndex);
                    //芯片选中列表
                    boxChipCheckArray[nBoxIndex, nChipIndex] = checkBoxItem;

                    columnIndex++;
                }
                rowIndex++;
            }
        }

调用:

/// <summary>
        /// 晶圆盒
        /// </summary>
        public WaferAutoForm()
        {
            InitializeComponent();

            initBoxUI();

            SetUIUserName("OP");
        }


http://www.kler.cn/a/510196.html

相关文章:

  • 电子电气架构 --- ECU故障诊断指南
  • 2,Linux文件基本属性(基于Ubuntu示例进行讲解)
  • Android 项目依赖冲突问题:Duplicate class found in modules
  • Navicat 17 功能简介 | 商业智能 BI
  • dockerhub上一些镜像
  • K8S开启/关闭审计日志
  • 差分(前缀和的逆运算)
  • Oracle系列---【Oracle中密码的策略如何设置】
  • 学校C语言实验——文件
  • 新星杯-ESP32智能硬件开发--ESP32系统
  • 常在道中
  • awk命令进阶
  • LlamaIndex环境配置
  • JAVA常用得工具类大全《持续更新》
  • 《目标检测数据集下载地址》
  • Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比
  • Spring Boot 整合 Shiro详解
  • 在线图片转为excel工具
  • Golang Gin系列-4:Gin Framework入门教程
  • Python自动化测试中定位隐藏菜单元素的策略
  • html的iframe页面给帆软BI发送消息
  • 具身导航如何利用取之不尽的网络视频资源!RoomTour3D:基于几何感知的视频-指令训练调优
  • Web前端开发技术之HTMLCSS知识点总结
  • 用nginx正向代理https网站
  • 数据结构(链表 哈希表)
  • LeetCode:78.子集