CheckedListBoxControl 實現復選框的單選與多選功能


 

由於工作需要,需要實現復選框的單選與多選功能,找了好多資料都不是很全,經過兩天苦苦的挖挖挖,終於完成啦O(∩_∩)O哈哈~ 

用DEV控件中的CheckedListBoxControl控件,當然VS中的復選框組合控件應該按照下面方法也可以實現該功能,可以試下(⊙o⊙)哦

 

代碼來啦O(∩_∩)O哈哈~

 

 1   //首先觸發SelectedIndexChanged事件,然后再觸發ItemCheck事件
 2        
 3         //存儲選中的復選框的值
 4         string strGXY=string.Empty; 
 5         private void chkGXYGrade_SelectedIndexChanged(object sender, EventArgs e)
 6         {
 7 
 8             //先把所有的選擇框的狀態都置為不選中的狀態
 9             for (int i = 0; i < chkGXYGrade.Items.Count; i++)
10             {
11                 chkGXYGrade.SetItemCheckState(i, CheckState.Unchecked);
12             }
13         }
14 
15         private void chkGXYGrade_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e)
16         {
17             //如果復選框選中的數目大於0,把選中的復選框的索引和e.Index(獲取的當前選中點擊的復選框的索引)比較,如果相等就把該復選框選中,否則置為非選中狀態
18             if (chkGXYGrade.CheckedItems.Count > 0)
19             {
20                 for (int i = 0; i < chkGXYGrade.Items.Count; i++)
21                 {
22                     if (i != e.Index)
23                     {
24                         chkGXYGrade.SetItemCheckState(i, CheckState.Unchecked);
25                     }
26                 }
27             }
28             else
29             {
30               
31                 //如果復選框選中的數據小於0 ,則把所有的復選框的狀態都置為未選中的狀態
32                 for (int i = 0; i < chkGXYGrade.Items.Count; i++)
33                 {
34 
35                     chkGXYGrade.SetItemCheckState(i, CheckState.Unchecked);
36                     strGXY = string.Empty;
37                 }
38 
39             }
40 
41             
42             //循環復選框,根據選中的狀態來獲取選中的復選框的值
43             for (int i = 0; i < chkGXYGrade.Items.Count; i++)
44             {
45                 if (chkGXYGrade.Items[i].CheckState == CheckState.Checked)
46                 {
47                     strGXY = chkGXYGrade.GetItemText(i).ToString();
48                 }
49             }
50         }
級別只能選擇一個事件

 

 1   //記錄復選框選中的狀態
 2         CheckState csGXB;
 3 
 4         //存儲復選框選中的值(多選以‘/’區分  )
 5         string strGXB = string.Empty;
 6 
 7         //先觸發SelectedIndexChanged事件,再觸發ItemCheck事件
 8         private void chbGXBlb_SelectedIndexChanged(object sender, EventArgs e)
 9         {
10             switch (csGXB)
11             {
12                 case CheckState.Checked:
13 
14                     strGXB = string.Empty;
15                     for (int i = 0; i < chbGXBlb.Items.Count; i++)
16                     {
17                         //獲取選中的復選框的值
18                         if (chbGXBlb.GetItemChecked(i))
19                         {
20                             if (strGXB == string.Empty)
21                             {
22                                 strGXB = chbGXBlb.GetItemText(i);
23                             }
24                             else
25                             {
26                                 strGXB += "/" + chbGXBlb.GetItemText(i);
27                             }
28                         }
29                     }
30                     break;
31                 case CheckState.Unchecked:
32                     strGXB = string.Empty;
33                     for (int i = 0; i < chbGXBlb.Items.Count; i++)
34                     {
35                         if (chbGXBlb.GetItemChecked(i))
36                         {
37                             if (strGXB == string.Empty)
38                             {
39                                 strGXB = chbGXBlb.GetItemText(i);
40                             }
41                             else
42                             {
43                                 strGXB = strGXB + "/" + chbGXBlb.GetItemText(i);
44                             }
45                         }
46                     }
47                     break;
48 
49             }
50 
51         }
52 
53 
54   private void chbGXBlb_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e)
55         {
56             // e.State,獲取當前復選框的選中還是未選中的狀態(Checked 或UnChecked)
57             csGXB = e.State;
58             chbGXBlb_SelectedIndexChanged(null, null);
59         }
多選:根據選擇改變獲取值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM