TextBox

คอนโทรล TextBox

คอนโทรล TextBox เป็นคอนโทรลที่ใช้สำหรับการรับข้อมูลจากผู้ใช้เพื่อนำไปประมวลผลต่อไป นอกจากนี้ยังใช้ในการแสดงข้อความได้อีกด้วยคอนโทรล TextBox สามารถใช้ได้ทั้งแบบรับข้อมูลบรรทัดเดียวและแบบหลายบรรทัดได้ โดยถ้าต้องการให้รับข้อมูลได้หลายบรรทัดจะต้องกำหนดพร็อพเพอร์ตี้ MultiLines ของคอนโทรล TextBox ให้เป็น True (ค่า Default เป็น False)

อีเวนต์ของคอนโทรล TextBox มีดังนี้

    • TextChanged เกิดขึ้นเมื่อมีการเปลี่ยนแปลงเกิดขึ้นกับข้อความใน TextBox เช่น การพิมพ์ หรือ การลบข้อความ

เมธอดของคอนโทรล TextBox มีดังนี้

พร็อพเพอร์ตี้ของคอนโทรล TextBox มีดังนี้

การใช้งาน TextBox

การใช้งาน TextBox ส่วนใหญ่คือการอ่านข้อมูลจาก TextBox ซึ่งสามารถอ่านจากพร็อพเพอร์ตี้ Text ส่วนการอ่านเฉพาะข้อความที่ถูกเลือกอ่านจากพร็อพเพอร์ตี้ SelectText เช่น

Dim txt As String, selText As String

txt = TextBox1.Text

selText = TextBox1.SelectedText

MessageBox.Show(txt & vbNewLine & selText)


ข้อมูลที่อ่านจาก TextBox ถ้าเป็นข้อความ จะเป็นข้อมูลชนิดสตริง (String) แต่ถ้าเป็นตัวเลขจะเป็นชนิดจำนวนเต็ม (Integer) ในกรณีที่ต้องการนำค่าตัวเลขที่ใส่ใน TextBox ไปคำนวณ อาจทำการแปลงให้เป็นตัวเลขก่อนโดยใช้คลาส Convert.ToIntxx() เช่น

Dim num As Integer, numInt As Integer, numDoub As Double

num = TextBox1.Text

numInt = Convert.ToInt16(TextBox1.Text) ' เลขจำนวนเต็ม ไม่เกิน 32767

numDoub = Convert.ToDouble(TextBox2.Text) 'เลขทศนิยม

MessageBox.Show(5 + num & vbNewLine & 5 + numInt & vbNewLine & 5 + numDoub)

ตัวอย่างโปรแกรม รับค่าข้อมูลตัวเลขสำหรับการคำนวณผ่านทาง TextBox

1. ให้เพิ่ม Windows Form ใหม่ เข้ามาในโปรเจ็กต์

2. นำคอนโทรลมาวาง และกำหนดพร็อพเพอร์ตี้ที่สำคัญ ดังนี้

3. เขียนโค้ดเพื่อทดสอบการใช้อีเวนต์ TextChanged

3.1 สร้างฟังก์ชัน isNum ตรวจสอบข้อมูลว่าผู้ใช้ใส่ข้อมูลที่เป็นตัวเลขหรือไม่

Private Function isNum(ByVal strNum As String) As Boolean

If (Not IsNumeric(strNum)) Then

Return False

Else

Return True

End If

End Function

3.2 เขียนโค้ดของ TextBox เพื่อตรวจสอบอีเวนต์ TextChanged

Private Sub tbxNum1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbxNum1.TextChanged

If (tbxNum1.Text = " ") Then

Return

End If

If (Not isNum(tbxNum1.Text)) Then

MessageBox.Show("กรุณาป้อนตัวเลขเท่านั้น")

tbxNum1.Clear()

tbxNum1.Focus()

End If

End Sub


Private Sub tbxNum2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbxNum2.TextChanged

If (tbxNum2.Text = " ") Then

Return

End If

If (Not isNum(tbxNum2.Text)) Then

MessageBox.Show("กรุณาป้อนตัวเลขเท่านั้น")

tbxNum2.Clear()

tbxNum2.Focus()

End If

End Sub

4. สร้างฟังก์ชันสำหรับการคำนวณ (calculate) เมื่อรับตัวเลข 2 ตัวเข้ามา แล้วส่งผลลัพธ์กลับ ออกไป (ฟังก์ชันนี้จะถูกเรียกใช้งานเมื่อมีการคลิกที่ปุ่มคำนวณต่าง ๆ)

Private Function Calculate(ByVal op As Char) As Double

Dim num1, num2, num3 As Double

num1 = Convert.ToDouble(tbxNum1.Text)

num2 = Convert.ToDouble(tbxNum2.Text)

Select Case op

Case "+" : Return num1 + num2

Case "-" : Return num1 - num2

Case "x" : Return num1 * num2

Case "/" : Return num1 / num2

Case Else

Return 0.0

End Select

End Function

5. เขียนโค้ดสำหรับปุ่มคำนวณทั้ง 4 ปุ่ม

Private Sub btnPlus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlus.Click

tbxResult.Text = Calculate(btnPlus.Text)

End Sub

Private Sub btnSubtract_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubtract.Click

tbxResult.Text = Calculate(btnSubtract.Text)

End Sub

Private Sub btnMultiple_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMultiple.Click

tbxResult.Text = Calculate(btnMultiple.Text)

End Sub

Private Sub btnDivide_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDivide.Click

tbxResult.Text = Calculate(btnDivide.Text)

End Sub