最近在做公司项目时,用到了一些单选多选的处理情况。特编辑此文,欢迎批评指正。(有图有真相)
winfrom程序。
首先,需要绑定某些用户,该用于由当前登陆用户获取。
private void BindUser()
{
DataTable dt = new WebService.Manage.Manage().getUsersByParentID(Main.tbl_user.ID);// 通过webservice访问数据库,根据当前登陆用户获取其子用户。
CheckBox user = new CheckBox();
user.Location = new Point(30, 0);
user.Text = Main.tbl_user.U_UserName;
user.Tag = Main.tbl_user.ID;
panelUser.Controls.Add(user);
for (int i = 1; i < dt.Rows.Count; i++)//循环遍历 子用户。
{
CheckBox userr = new CheckBox();
userr.Location = new Point(30, i * 20);
userr.Text = dt.Rows[i - 1]["U_UserName"].ToString();
userr.Tag = dt.Rows[i - 1]["ID"].ToString();
panelUser.Controls.Add(userr);//特定的 panel 中绑定 用户名
}
}
下图为绑定之后的效果:
/// <summary>
/// 选择“全选”,指定的panle中的 checkbox全部选中
/// </summary>
/// <param name="checkAllCheck">全选按钮</param>
/// <param name="panel">其他checkbox容器</param>
private void checkAllCheck(CheckBox checkAllCheck,Panel panel)
{
if (checkAllCheck.Checked)
{
foreach (CheckBox check in panel.Controls)
{
check.Checked = true;
check.Enabled = false;
checkAllCheck.Enabled = true;// 控制 不可更改
}
}
else
{
foreach (CheckBox check in panel.Controls)
{
check.Enabled = true;
}
}
}
此图为绑定之后。单机全选按钮后的效果。此事,各个用户不可再取消选择,除非,取消全选。