C# 程序中全选复选框的使用

这里只整理了全选复选框和GridControl、全选复选框和CheckedListBox的组合实现

 

 1         #region 全选状态控制
 2         private void clbcTemp_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e)
 3         {
 4             //当复选框的tag属性为空时,列表中所有复选框勾选,改变全选复选框的状态,避免因改变全选复选框引起的
 5             //列表复选框的状态改变对全选复选框的影响
 6             if (clbcTemp.CheckedItems.Count == clbcTemp.ItemCount && ceCheckAll.Tag == null)
 7             {
 8                 ceCheckAll.Tag = true;
 9                 ceCheckAll.Checked = true;
10             }
11             else 
12             {
13                 if (!ceCheckAll.Checked)
14                 {
15                     ceCheckAll.Tag = true;
16                     ceCheckAll.Checked = false;
17                 }
18             }
19         }
20 
21         private void ceCheckAll_CheckedChanged(object sender, EventArgs e)
22         {
23             //判断是由手动改变全选复选框的值引起的状态改变,
24             //还是由点击列表中的复选框引起的状态改变,如果是由列表中引起的tag属性为true,返回
25             if (ceCheckAll.Tag != null && (bool)ceCheckAll.Tag)
26             {
27                 ceCheckAll.Tag = null;
28                 return;
29             }
30             ceCheckAll.Tag = false;
31             for (int i = 0; i < clbcTemp.ItemCount; i++)
32             {
33                 clbcTemp.SetItemChecked(i, false);
34                 clbcTemp.SetItemChecked(i, ceCheckAll.Checked);
35             }
36             ceCheckAll.Tag = null;
37         }
全选复选框和CheckedListBox的组合

    

 1 //全选按钮的状态改变事件
 2         //如果控件的tag值为true表示由gridview的值改变引发的全选,不进行任何处理
 3         //如果手动改变控件的值,控件的tag置为false
 4         private void ceCheckAll_CheckedChanged(object sender, EventArgs e)
 5         {
 6             if (ceCheckAll.Tag != null && (bool)ceCheckAll.Tag)
 7             {
 8                 ceCheckAll.Tag = null;
 9                 return;
10             }
11             ceCheckAll.Tag = false;
12             for (int i = 0; i < viewSrch.DataRowCount; i++)
13             {
14                 viewSrch.SetRowCellValue(i, "选择", false);
15                 viewSrch.SetRowCellValue(i, "选择", ceCheckAll.Checked);
16             }
17             ceCheckAll.Tag = null;
18         }
19         //当数据行的选中状态发生改变时,判断所有的数据行是否被选中
20         //如果被选中将全选复选框置为true反之为FALSE
21         private void SetCheckAllState(GridView view)
22         {
23             bool temp = (view.DataRowCount != 0);
24             for (int i = 0; i < view.DataRowCount; i++)
25             {
26                 if (!(bool)view.GetRowCellValue(i, view.Columns[0]))
27                 {
28                     temp = false;
29                     break;
30                 }
31             }
32             if (!temp && ceCheckAll.Checked)
33             {
34                 ceCheckAll.Tag = true;
35                 ceCheckAll.Checked = false;
36             }
37             if (temp && !ceCheckAll.Checked)
38             {
39                 ceCheckAll.Tag = true;
40                 ceCheckAll.Checked = true;
41             }
42         }
43   //如果全选框的tag值为FALSE,说明改变全选框的值引发的事件,不进行处理
44         private void viewSrch_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
45         {           
46             if (e.Column == viewSrch.Columns["选择"])
47             {
48                 if (ceCheckAll.Tag != null && !(bool)ceCheckAll.Tag)
49                     return;
50                 SetCheckAllState(viewSrch);
51             }
52         }
全选复选框和GridControl的组合

 

posted @ 2017-05-16 08:59  一直的初学者  阅读(2408)  评论(0编辑  收藏  举报