由於工作需要,需要實現復選框的單選與多選功能,找了好多資料都不是很全,經過兩天苦苦的挖挖挖,終於完成啦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 }