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

   //1、清空权限控件组的默认控件
panelPermissions.Controls.Clear();
_groupBoxList = new List<GroupBox>();
//2、遍历权限组数据,动态生成权限控件组
var groupBoxNameTemp = "gBox";
var checkBoxNameTemp = "ck";
var lastGroupBoxHeight = ;
for (var i = ; i < permissions.Count; i++)
{
//创建权限组容器
GroupBox gbox = new GroupBox()
{
Name = groupBoxNameTemp + i,
Text = permissions[i].GroupName,
Width = ,
Height = (permissions[i].Permissions.Count / + ) * ,
Location = new Point(, lastGroupBoxHeight + i * )
};
lastGroupBoxHeight = lastGroupBoxHeight + gbox.Height;
//将权限组容器添加到界面上
panelPermissions.Controls.Add(gbox);
//创建权限组容器中的CheckBox
var pRowIndex = ;
var pColIndex = ;
for (var c = ; 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 / ;//行号
pColIndex = c % ;//列号
checkBox.Location = new Point( + pColIndex * , + pRowIndex * );
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;//列号

用来换行的。

)。

05-11 19:34