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