1. 程式人生 > >C#WinForm開發系列之CheckBox控制元件全選和取消全選以及checkedListBox的基礎使用介紹

C#WinForm開發系列之CheckBox控制元件全選和取消全選以及checkedListBox的基礎使用介紹

一.研究了一下C# CheckBox控制元件的全選和反選問題,這裡研究了兩種全選的方法:

1.首先,使用3個panel控制元件和8個checkBox控制元件實現了反選和全選的實現介面,panel11的Dock屬性設為Top,panel12的Dock屬性設為Left,panel13的Dock屬性設為Fill,效果如圖1所示:


圖1

2.將全選按鈕checkBox1的click事件中實現如下程式碼:

 private void checkBox1_Click(object sender, EventArgs e)
 {

//判斷
       if (checkBox1.CheckState == CheckState.Checked)
       {
              foreach (CheckBox ck in panel13.Controls)
              ck.Checked = true;
        }
        else
        {
               foreach (CheckBox ck in panel13.Controls)
               ck.Checked = false;
        }
 }

在Form1的構造方法中給所有子選項繫結ck_child_CheckedChanged方法,程式碼如下:

 public Form1()
 {
        InitializeComponent();
         foreach (CheckBox ck in panel13.Controls)
         {
             ck.CheckedChanged += ck_child_CheckedChanged;
         }
 }

最後在方法中實現如下程式碼:

 private void ck_child_CheckedChanged(object sender, EventArgs e)
 {  
      CheckBox c = sender as CheckBox;
      if (c.Checked == true)
      {
            foreach (CheckBox ch in panel13.Controls)
            {
                 if (ch.Checked == false)
                 return;
            }
                checkBox1.Checked = true; 
       }
       else
       {
                checkBox1.Checked = false;
      }
}

下圖2,3展示全選和反選的實現效果:


圖2


圖3

二.checkedListBox基礎使用

1.首先從工具箱中拖出一個checkedListBox控制元件和一個Label及一個button控制元件,checkedListBox控制元件可通過編輯項新增選擇項,如圖4所示:


圖4

在checkedListBox控制元件如圖5所示的兩個焦點事件中新增程式碼:


圖5

程式碼如下:

 short inum = 0;
 private void checkedListBox1_Validated(object sender, EventArgs e)
 {
        label2.Text = "當前共有"+checkedListBox1.Items.Count.ToString()+"項"+"\r\n"+"數字項有"+inum.ToString()+"項";
 }


 private void checkedListBox1_Validating(object sender, CancelEventArgs e)
 {
        short i = 0;
        for (i = 0; i < checkedListBox1.Items.Count;i++ )
        {
             if(Information.IsNumeric(checkedListBox1.Items[i].ToString()))
             {
                  inum++;
              }
         }
  }

當焦點離開checkedListBox控制元件點選button控制元件就會自動觸發Validating和Validated事件,效果如圖6所示:


圖6