首页 > 代码库 > C# WinForm中的全选和反选(CheckBox)
C# WinForm中的全选和反选(CheckBox)
方案一:
前置说明:
控件:DEV控件;
选框:除了“全选”框名字为“ckbAll”,其余选框名字依次为:“ckb0,ckb1,ckb2,...ckb12”,区分全选框;
事件:选框事件只用Click事件。(在调试过程中,用Changed事件,会出现类似死循环的情况)
面板:总14个选框,均在面板:StatusPanel上(这里将使用循环获取DEV控件,且是CheckEdit类型时,做单选和全选判定)。
由于技术有限,未能良好运用其他控件(如CheckBoxList等),
故,使用CheckBox处理全选和反选的算法如下:
单击事件有两类:普通单选框和选项单选框(实际上两个算法很相似)。
普通单选框事件算法:
1 /// <summary> 2 /// 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void ckb_CheckedChanged(object sender, EventArgs e) //OnClick单击时间 7 { 8 bool isChecked = !((CheckEdit)sender).Checked; //获取控件的初始状态值,未改变状态之前的值(获取单击后的相反值。) 9 foreach (Control ckb in StatusPanel.Controls) //循环面板上所有控件10 {11 if (ckb is DevExpress.XtraEditors.CheckEdit) //控件是Checkbox时12 {13 if (!((DevExpress.XtraEditors.CheckEdit)ckb).Checked && //控件未勾选 && 控件文本名等于选框文本值 && 单击控件名不是“全选框”
!((DevExpress.XtraEditors.CheckEdit)ckb).Text.Equals(((CheckEdit)sender).Text) &&
((DevExpress.XtraEditors.CheckEdit)ckb).Name!="ckbAll")14 {15 isChecked = false; //说明选框未全选,赋值false16 break;17 }18 }19 }20 ckbAll.Checked = isChecked; //21 }22 23 /// <summary>24 /// 25 /// </summary>26 /// <param name="sender"></param>27 /// <param name="e"></param>28 private void ckbAll_CheckedChanged(object sender, EventArgs e)29 {30 bool NoneorAll = !ckbAll.Checked;31 foreach (Control ckb in StatusPanel.Controls)32 {33 if (ckb is CheckEdit && ((CheckEdit)ckb).Name!="ckbAll")34 {35 ((CheckEdit)ckb).Checked = NoneorAll;36 }37 }38 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。