 |
|
วิธีการทำให้เทกซ์บ๊อกซ์ Textbox รับค่าได้เฉพาะ ตัวเลข หรือภาษาไทยหรือภาษาอังกฤษใน vb.net ผมมีวิธีแนะนำครับลองเอาไปพิจารณาน่ะครับ |
|
 |
|
|
 |
 |
|
ผมจะไม่อธิบายอะไรมากมายน่ะครับ แต่จะเขียนโค๊ดตัวอย่างให้ดู ลองเอาไปใช้น่ะครับ เพื่อให้เกิดประโยชน์มากที่สุดครับ
Code (VB.NET)
Public Class Form1
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Select Case Asc(e.KeyChar)
Case 48 To 57 ' key โค๊ด ของตัวเลขจะอยู่ระหว่าง48-57ครับ 48คือเลข0 57คือเลข9ตามลำดับ
e.Handled = False
Case 8, 13, 46 ' ปุ่ม Backspace = 8,ปุ่ม Enter = 13, ปุ่มDelete = 46
e.Handled = False
Case Else
e.Handled = True
MessageBox.Show("สามารถกดได้แค่ตัวเลข")
End Select
End Sub
ต่อกันเลยน่ะครับกับโค๊ดดักภาษาอังกฤษครับ
Code (VB.NET)
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
Select Case Asc(e.KeyChar)
Case 48 To 122' โค๊ดภาษาอังกฤษ์ตามจริงจะอยู่ที่ 58ถึง122 แต่ที่เอา 48มาเพราะเราต้องการตัวเลข
e.Handled = False
Case 8, 13, 46 ' Backspace = 8, Enter = 13, Delete = 46
e.Handled = False
Case Else
e.Handled = True
MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาอังกฤษ")
End Select
End Sub
ต่อไปเป็นการดักภาษาไทยน่ะครับ
Code (VB.NET)
Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
Select Case Asc(e.KeyChar)
Case 48 To 57 ' ตรงนี้คือโค๊ดตัวเลขน่ะครับเราตัดโค๊ด58-122ออกไปเพราะว่าโค๊ดดังกล่าวมันเป็นภาษาอังกฤษครับ
e.Handled = False
Case 8, 13, 46 ' Backspace = 8, Enter = 13, Delete = 46
e.Handled = False
Case 161 To 240 ' แล้วมาใส่ตรงนี้เป็นคีย์โค๊ดภาษาไทยรวมทั้งตัวสระ+วรรณยุกต์ด้วยน่ะครับ
e.Handled = False
Case Else
e.Handled = True
MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาไทย")
End Select
End Sub
เพื่อนๆทุกคนลองนำไปประยุกต์ใช้ดูน่ะครับ ผมพยายามไปดพสตรงเขียนบทความแล้ว
แต่ดันเป็นสมาชิกใหม่ใช้งานในส่วนนั้นยังไม่เป็นอ่ะครับต้องขออภัยด้วย
ที่มาตั้งเป็นกระทู้ เพราะอยากเผยแพร่ความรู้ตรงนี้ให้คนที่ยังไม่รู้ได้นำไปใช้กันครับ
ผิดพลาดตรงในก็แนะนำได้น่ะครับ
Tag : .NET, VB.NET
|
|
 |
 |
 |
 |
Date :
2011-12-27 04:34:29 |
By :
worajito |
View :
43430 |
Reply :
21 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
น้ำใจงามครับ มีประโยชน์แน่นอนครับ 
|
 |
 |
 |
 |
Date :
2011-12-27 05:43:55 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับ
ความหมายของ e.Handled คืออะไรอะครับ
|
 |
 |
 |
 |
Date :
2011-12-30 22:11:34 |
By :
benz123 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
e.Handled ก็คือโค๊ดที่เอาไว้ย้อนกลับการทำงานไปสู่สภาวะเริ่มต้น ไม่รู้จะอธิบายอย่างไรดี เรียนมาน้อย แค่ ม.3 555+ ถ้าเอาแบบภาษาชาวบ้านตามที่ผมเข้าใจก็คือการย้อนกลับสถานะหรือเหตุการณ์ของคอนโทรลหรือวัตถุนั้นๆ หากมันเป็นเท็จ คอนโทรล หรือวัตถุนั้นๆ ก็จะทำงานไปตามปกติ แต่ถ้าหากมันเป็นจริงคอนโทรลหรือวัตถุนั้นๆ ก็จะย้อนกลับการเหตุการ์ทำงานของตัวเองไปสู่สภาวะเริ่มต้น(คือไม่มีอะไรเกิดขึ้น) เช่น ในเหตุการณ์ keyprees
ซึ่งในตอนแรกค่าทั้งหมดจะเป็นเท็จ โดยรับค่าจากแป้นคีย์บร์อด ซึ่งถ้าเรากดปุ่มใดมันก็จะรับค่า คีย์ของปุ่มนั้นไปประมวลผล
แต่ถ้าหากมันเป็นจริง
มันจะไม่รับรู้ข้อมูลใดๆ เนื่องจากว่ามันได้ย้อนกลับไปตั้งค่าตัวเลขหรือคีย์โค๊ด หรือ แอสกี้โค๊ดกลับไปเป็น0
(จำภาษาอังกฤษไม่ได้ขออภัยด้วยครับ55+) หวังว่าคงเข้าใจน่ะครับ อธิบายเองยัง งงเองเลย555+
|
ประวัติการแก้ไข 2011-12-31 21:43:17
 |
 |
 |
 |
Date :
2011-12-31 21:18:54 |
By :
worajito |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับ มีประโยชน์มากๆเลย q^_^'p
|
 |
 |
 |
 |
Date :
2012-01-04 13:29:29 |
By :
q=_='p |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วทำแบบผสม การใช้แบบ ตัวเลขกับตัวอักษร ในฟรอมเดี๋ยวกันได้ป่าวอ่ะ เขียนโค้ดให้ดูด้วยน่ะ
|
 |
 |
 |
 |
Date :
2012-01-27 00:26:08 |
By :
AAA |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โค๊ดที่ผมเอามาลงมันก็ผสมตัวเลขกับตัวอักษรอยู่แล้วนี่ครับ ไม่เห็นต้องเขียนให้ดูใหม่เลย
|
 |
 |
 |
 |
Date :
2012-01-29 01:41:45 |
By :
worajito |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุนมากๆๆเลยคับ
|
 |
 |
 |
 |
Date :
2012-05-10 21:41:41 |
By :
TheSkyPy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จริงๆ แล้วต้องอ่าน MSDN ครับถึงจะกะจ่าง
http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.handled.aspx
ใน MSDN บอกไว้ว่า
If the event is not handled, it will be sent to the operating system for default processing. Set Handled to true to cancel the KeyPress event.
แปลได้ว่า ถ้า method ของเรานั่นไม่ต้องการจะจัดการ KeyPress event หรือต้องการที่จะยกเลิก KeyPress event เราต้อง e.Handled = true เพื่อบอก OS ว่าไม่ต้องทำอะไรแล้วนะ ใน method ของเรานั่นสั่งยกเลิก KeyPress event นั่นแล้ว ในกรณีนี้ก็คือถ้า KeyPress ที่เข้ามาไม่ใช่ตัวเลขเรา return true ซึ่งแปลว่าเราจัดการเรียบร้อยแล้วว่าเราจะไม่ print ตัวอัการนั่นใน TextBox OS เมื่อเห็นว่า e.Handled = true ก็จะรู้ทันทีว่าไม่ต้องทำอะไรเลยเพราะ method ได้จัดการเรียบร้อยแล้ว OS ก็จะไม่ print ตัวอักษรนั่นลงใน TextBox ครับ
แต่ถ้าเรา e.Handled = false นั่นก็คือว่าเราจะให้ OS เเป็นคนจัดการ KeyPress event ด้วยนั่นเองครับ
|
 |
 |
 |
 |
Date :
2012-05-10 23:44:09 |
By :
pStudio |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากค่ะ
มีประโยชน์มากๆเลยค่ะ
|
 |
 |
 |
 |
Date :
2012-08-17 14:06:04 |
By :
BKAJU1987 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับ   
|
 |
 |
 |
 |
Date :
2012-08-17 14:12:35 |
By :
JaNoRn |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สุดยอดมากครับ ขอบคุณมากครับ มีประโยชน์จริงๆ
|
 |
 |
 |
 |
Date :
2012-09-04 20:53:27 |
By :
bill17259 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบ คุณ มาก ค่ะ ออก มา แบบ สวย งาม มาก ค่ะ
|
 |
 |
 |
 |
Date :
2012-09-16 17:16:20 |
By :
komokomoman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
KeyPress คืออะไรค่ะ
พอเอาไปลองใช้งานจากโค้ดที่พี่ได้โพส มันerror ตรงKeyPress
อยากทราบว่าต้องแก้ยังไงค่ะ
ช่วยหน่อยน่ะค่ะ
|
 |
 |
 |
 |
Date :
2013-01-30 23:27:36 |
By :
keem |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
....
|
ประวัติการแก้ไข 2013-01-31 05:03:44
 |
 |
 |
 |
Date :
2013-01-31 04:53:28 |
By :
kyokohoho |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2013-01-31 05:02:28 |
By :
kyokohoho |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณน่ะค่ะ ลืมบอกไปว่าทำในรูปแบบ Web app อ่ะ ค่ะ ต้องโทษด้วยน่ะค่ะ
แล้วถ้าเป็นแบบ Web App ทำยังไงค่ะ
|
 |
 |
 |
 |
Date :
2013-02-01 02:18:55 |
By :
keem |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
asp.net ใช้ onkeypress
Code (ASP)
<asp:TextBox ID="TextBox1" runat="server" onkeypress="OnlyNumericEntry()"> </asp:TextBox>
<script>
function OnlyNumericEntry() {
if ((event.keyCode < 48 || event.keyCode > 57)) {
event.returnValue = false;
}
}
</script>
|
 |
 |
 |
 |
Date :
2013-02-01 08:28:15 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณน่ะค่ะ พี่พอจะมีโค้ด script ที่สามารถพิมได้เฉพาะ ภาษาไทยกับภาษาอังกฤษ ไมค่ะ
|
 |
 |
 |
 |
Date :
2013-02-01 10:43:17 |
By :
keem |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
Select Case Asc(e.KeyChar)
Case 48 To 122' โค๊ดภาษาอังกฤษ์ตามจริงจะอยู่ที่ 58ถึง122 แต่ที่เอา 48มาเพราะเราต้องการตัวเลข
e.Handled = False
Case 8, 13, 46 ' Backspace = 8, Enter = 13, Delete = 46
e.Handled = False
Case Else
e.Handled = True
MessageBox.Show("กรุณาระบุข้อมูลเป็นภาษาอังกฤษ")
End Select
End Sub
ใช้ Event key press เเล้วยัง Key ภาษาไทยได้อยู่เลยค่ะ รบกวนหน่อยค่ะ


|
 |
 |
 |
 |
Date :
2017-10-14 14:36:45 |
By :
z0926538119 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|