动态生成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;//列号

用来换行的。

)。

posted @ 2017-05-19 14:21  dotNet修行之路  阅读(4745)  评论(0编辑  收藏  举报