ComboBox
คอนโทรล ComboBox
เป็นคอนโทรลสำหรับเก็บรายการต่างๆ ให้ผู้ใช้เลือก แต่จะแสดงรายการออกมาให้เห็นเพียงรายการเดียว ซึ่งหากจะเลือกรายการต้องคลิกเปิดดูรายการ ซึ่งจะคล้ายกับคอนโทรล ListBox เพียงแต่คอนโทรล ListBoxจะแสดงรายการให้เห็นหลายๆ รายการ
อีเวนต์ของคอนโทรล ComboBox มีดังนี้
- SelectedIndexChanged เกิดหลังจากผู้ใช้เปลี่ยนแปลงลำดับรายการ (Index) ที่เลือกใน Combo
- SelectedValueChanged เกิดหลังจากผู้ใช้เปลี่ยนแปลงรายการ (Value) ที่เลือกใน Combo
พร็อพเพอร์ตี้ของคอนโทรล ComboBox มีดังนี้
เมธอดของคอนโทรล ComboBox มีดังนี้
การใช้งานคอนโทรล ComboBox สิ่งที่จะขาดไม่ได้สำหรับคอนโทรล ComboBox ก็คือรายการตัวเลือกหรือ Item ซึ่งสามารถสร้าง Item ได้ทั้งในขณะออกแบบและขณะโปรแกรมทำงาน หากใส่รายการในขณะออกแบบ ให้เลือกพร็อพเพอร์ตี้ Items แล้วเติมรายการลงไป (ถ้าต้องการเติมรายการถัดไปให้กด Enter โดยรายการ 1 บรรทัด ต่อ 1 รายการ) เมื่อเติมรายการจนครบให้คลิก OK
หากต้องการเพิ่มรายการในขณะโปรแกรมทำงานให้ใช้เมธอดที่เกี่ยวกับการเพิ่ม Item เช่น Add(),AddRange(), Insert () เป็นต้น และหากต้องการลบรายการก็ใช้เมธอดเกี่ยวกับการลบ เช่น Remove(), RemoveAt(), Clear()
ตัวอย่าง เช่น
ComboBox1.Items.Add (“one”)
ComboBox1.Items.Add (“two”)
Dim itm() As Object = {“four”, “five”}
ComboBox1.Items.AddRange(itm)
ComboBox1.Items.Insert(2, “three”)
ComboBox1.Items.Remove(“two”)
ComboBox1.Items.RemoveAt(4)
สำหรับการค้นหารายการใช้เมธอด FindString() และ FindStringExact() นั้น โปรแกรมจะถือว่าตัวพิมพ์เล็ก/ใหญ่ ต่างกัน ถือว่าไม่เหมือนกัน เช่น
ComboBox1.Items.Add(“ABC”)
idx = ComboBox1.FindString(“b”)
idx = ComboBox1.FindString(“B”)
idx = ComboBox1.FindStringExact(“abc”)
idx = ComboBox1.FindStringExact(“ABC”)
ในการตรวจสอบรายการที่เลือก หากจะตรวจสอบขณะใดขณะหนึ่ง ก็ใช้พร็อพเพอร์ตี้ SelectedItem ตามปกติ แต่หากจะตรวจสอบเมื่อผู้ใช้เปลี่ยนแปลงการเลือกรายการ ก็ให้กำหนดไว้ในอีเวนต์ SelectedValueChanged หรือ SelectedIndexChanged
เช่น
Sub CombBox1_SelectedValueChanged() Handles ComboBox1.SelectedValueChanged
Dim SelectedItem As String = ComboBox1.SelectedItem
End Sub
ตัวอย่าง การใช้ ComboBox ทำการเพิ่มลบค้นหารายการ และการปรับพร็อพเพอร์ตี้ DropDownStyle ของ ComboBox
1. ให้เพิ่ม Windows Form ใหม่เข้ามาในโปรเจ็กต์
2. นำคอนโทรลมาวางไว้บนฟอร์ม และกำหนดพร็อพเพอร์ตี้ ดังนี้
3. เขียนโค้ด ปุ่ม “เพิ่ม”, “ลบ”, “ค้นหา”
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAdd.Click
Dim itm As String = tbxInput.Text
If (itm <> "") Then
If (cbxItem.FindStringExact(itm) <> -1) Then
MessageBox.Show("รายการที่เพิ่มมีอยู่แล้ว ", "ผิดพลาด", _ MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
Dim idx As Integer
idx = cbxItem.Items.Add(itm) cbxItem.SelectedIndex = idx tbxInput.Text = ""
End If
End Sub
Private Sub btnRemove_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnRemove.Click
If (tbxInput.Text <> " ") Then
cbxItem.Items.Remove(tbxInput.Text)
tbxInput.Text = ""
End If
End Sub
Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnFind.Click
Dim idx As Integer
If (tbxInput.Text <> " ") Then
idx = cbxItem.FindString(tbxInput.Text)
End If
If (idx <> -1) Then
MessageBox.Show("พบรายการ : " & tbxInput.Text & " ในลำดับที่ " & _ (idx + 1))
Else
MessageBox.Show("ไม่พบรายการ : " & tbxInput.Text)
End If
End Sub
4. เขียนโค้ดให้กับ RadioButton ทั้ง 3 ในการเปลี่ยนรูปแบบ (style) ของ ComboBox
Private Sub rdoDropDown_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoDropDown.CheckedChanged
cbxItem.DropDownStyle = ComboBoxStyle.DropDown
End Sub
Private Sub rdoDropDownList_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoDropDownList.CheckedChanged
cbxItem.DropDownStyle = ComboBoxStyle.DropDownList
End Sub
Private Sub rdoSimple_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoSimple.CheckedChanged
cbxItem.DropDownStyle = ComboBoxStyle.Simple
End Sub
5. เขียนโค้ดเมื่อผู้ใช้เลือกรายการใน ComboBox ให้แสดงผลการเลือกรายการที่ Label
Private Sub cbxItem_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbxItem.SelectedValueChanged
lblResult.Text = cbxItem.SelectedItem
End Sub