C# WinForm中的全選和反選(CheckBox)

來源:互聯網
上載者:User

標籤:winform   style   class   blog   code   http   

方案一:

前置說明:

控制項: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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.