CheckedListBox
คอนโทรล CheckedListBox
คอนโทรล CheckedListBox เป็นลิสต์สำหรับการแสดงรายการ เหมือนกับ ListBox แต่จะมีเครื่องหมายสำหรับเช็ครายการที่เลือกด้วย
พร็อพเพอร์ตี้ของ CheckedListBox มีดังนี้
เมธอดของ CheckedListBox มีดังนี้
การใช้งานคอนโทรล CheckedListBox จะมีรูปแบบการใช้งานคล้ายกับคอนโทรลประเภทรายการอื่นๆ โดยส่วนใหญ่จะเป็นการเพิ่ม, ลบ, ตรวจสอบรายการที่เลือก
การเพิ่มรายการในคอนโทรล CheckedListBox
หากจะเพิ่มรายการขณะออกแบบ ให้เลือกพร็อพเพอร์ตี้ Items แต่ถ้าต้องการเพิ่มรายการในขณะรันโปรแกรม จะต้องใช้เมธอด Item.Add() หรือ Items.Insert() เช่น
CheckedListBox1.Items.Add(“Item 1”)
CheckedListBox1.Items.Add(“Item 2” , True) ‘ กำหนดให้เลือกไว้ล่วงหน้า
CheckedListBox1.Items.Insert(2, “Item 3”)
True หมายถึง กำหนดให้เลือกไว้ล่วงหน้า
การตรวจสอบรายการที่ถูกเลือก
วิธีการตรวจสอบรายการที่ถูกเลือกวิธีที่ง่ายที่สุด คือ การใช้ Loop For Each เพื่อตรวจสอบจากพร็อพเพอร์ตี้ CheckedItems เช่น
Dim SeclectedItem As String = “ ”
For Each itm In CheckedListBox1.CheckedItems
SelectedItem &= itm & vbNewLine
Next
การลบรายการในคอนโทรล CheckedListBox
การลบรายการในคอนโทรล CheckedListBox ถ้าต้องการลบรายการใดรายการหนึ่ง อาจใช้เมธอด Items.Remove() หรือ Items.RemoveAt() ได้ตามปกติ หรือถ้าต้องการจะลบทุกรายการก็ใช้ Clear() แต่โดยส่วนใหญ่แล้วมักเป็นการลบรายการที่ถูกเลือกมากกว่า 1 รายการ ซึ่งการลบรายการที่ถูกเลือกนี้ไม่สามารถใช้ Loop For Each กับพร็อพเพอร์ตี้ CheckedItems ได้เหมือนกับการตรวจสอบรายการที่ถูกเลือกเพราะในแต่ละลูปการวนรอบรายการจะถูกลบออกไป ทำให้ขอบเขตการวบลูปต่างไปจากเดิมจึงเกิดข้อผิดพลาดขึ้น ซึ่งวิธีหนึ่งที่สามารถใช้ได้ผลดี คือวนลูปไปตามจำนวนรายการทั้งหมดที่มีแล้วตรวจสอบว่ารายการลำดับนั้นถูกเลือกหรือไม่ โดยใช้เมธอด GetItemChecked() ถ้าถูกเลือกก็ลบด้วยเมธอด Items.RemoveAt แต่ที่สำคัญก็คือ ต้องใช้การวนลูปแบบนับลง โดยเริ่มจากรายการตัวสุดท้ายแล้วไล่ย้อนกลับมายังรายการแรก
For i = (CheckedListBox1.Items.Count-1) To 0 Step -1
If (CheckedListBox1.GetItemChecked(i)) Then
CheckedListBox1.Items.RemoveAt(i)
End If
Next
ตัวอย่าง การใช้งานคอนโทรล CheckedListBox ในการเพิ่ม ลบ และตรวจสอบรายการที่ถูกเลือก
1. ให้เพิ่ม Windows Form ใหม่เข้ามาในโปรเจ็กต์
2. นำคอนโทรลมาวางไปบนฟอร์ม และ กำหนดพร็อพเพอร์ตี้ให้กับคอนโทรล ดังนี้
3. เขียนโค้ดให้กับ CheckBox “Check On Click” เพื่อให้สามารถเลือกรายการได้โดยการ Click ครั้งเดียว
Private Sub chkOnClick_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkOnClick.CheckedChanged
chklbColor.CheckOnClick = chkOnClick.Checked
End Sub
4. เขียนโค้ดการเพิ่มรายการ โดยอ่านค่าจาก TextBox หากไม่เป็นค่าว่างและไม่ซ้ำกับรายการเดิมก็จะเพิ่มรายการลงไป
Private Sub btnAddItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddItem.Click
Dim itm As String Dim idx As Integer itm = tbxItem.Text
If (itm <> " ") Then
If (chklbColor.FindStringExact(itm) <> -1) Then
MessageBox.Show("รายการนี้มีอยู่แล้ว กรุณาป้อนใหม่ ")
Return
Else
idx = chklbColor.Items.Add(itm, chkNewItem.Checked)
chklbColor.SetSelected(idx, True)
tbxItem.Text = "" tbxItem.Focus()
End If
End If
End Sub
5. เขียนโค้ดสำหรับการแสดงรายการที่ถูกเลือกให้กับปุ่ม “แสดงรายการที่เลือก”
Private Sub btnShowSelected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowSelected.Click
Dim selectedItem As String = ""
For Each itm In chklbColor.CheckedItems
selectedItem &= " - " & itm & vbNewLine
Next
If selectedItem = "" Then
MessageBox.Show("กรุณาเลือกรายการที่ต้องการ", "ผิดพลาด")
Return
End If
MessageBox.Show("รายการที่เลือก : " & vbNewLine & selectedItem, "ผลการ เลือกรายการ")
End Sub
6. เขียนโค้ดการลบรายการให้กับปุ่ม “ลบรายการที่เลือก”
Private Sub btnRemoveSelected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveSelected.Click
For i = (chklbColor.Items.Count - 1) To 0 Step -1
If (chklbColor.GetItemChecked(i)) Then
chklbColor.Items.RemoveAt(i)
End If
Next
End Sub