zoukankan      html  css  js  c++  java
  • 动态生成CheckBox(Winform程序)

    在做用户权限设置功能时,需要做一个动态生成权限列表的功能。(笔记、分享)

       //1、清空权限控件组的默认控件
                            panelPermissions.Controls.Clear();
                            _groupBoxList = new List<GroupBox>();
                            //2、遍历权限组数据,动态生成权限控件组
                            var groupBoxNameTemp = "gBox";
                            var checkBoxNameTemp = "ck";
                            var lastGroupBoxHeight = 0;
                            for (var i = 0; i < permissions.Count; i++)
                            {
                                //创建权限组容器
                                GroupBox gbox = new GroupBox()
                                {
                                    Name = groupBoxNameTemp + i,
                                    Text = permissions[i].GroupName,
                                    Width = 520,
                                    Height = (permissions[i].Permissions.Count / 5 + 1) * 42,
                                    Location = new Point(12, lastGroupBoxHeight + i * 10)
                                };
                                lastGroupBoxHeight = lastGroupBoxHeight + gbox.Height;
                                //将权限组容器添加到界面上
                                panelPermissions.Controls.Add(gbox);
                                //创建权限组容器中的CheckBox
                                var pRowIndex = 0;
                                var pColIndex = 0;
                                for (var c = 0; c < permissions[i].Permissions.Count; c++)
                                {
                                    CheckBox checkBox = new CheckBox()
                                    {
                                        Name = checkBoxNameTemp + c,
                                        Text = permissions[i].Permissions[c].PermissionName,
                                        Tag = permissions[i].Permissions[c].Id
                                    };
                                    pRowIndex = c / 4;//行号
                                    pColIndex = c % 4;//列号
                                    checkBox.Location = new Point(8 + pColIndex * 135, 16 + pRowIndex * 32);
                                    checkBox.Enabled = _currentUserHasPermissions.Contains(permissions[i].Permissions[c].Id);
                                    gbox.Controls.Add(checkBox);
                                }
                                _groupBoxList.Add(gbox);
                            }

    代码场景解释: 1、权限是有分组的,每一组权限放在一个GroupBox里面。2、每一组权限每行显示3个权限项(

    pRowIndex = c / 4;//行号
    pColIndex = c % 4;//列号

    用来换行的。

    )。

  • 相关阅读:
    简单的使用rabbitmq的例子
    装饰者模式
    Zinterstore 命令
    策略模式
    简单工厂模式
    getFields()与getDeclaredFields()区别
    解决Jetty下EL版本冲突的问题
    网站ssl配置
    webservice 项目 配置wsdl
    js前端clone的要诀
  • 原文地址:https://www.cnblogs.com/fjzhang/p/6878172.html
Copyright © 2011-2022 走看看