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