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