• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[VB.NET] Chỉ cho nhập số trong Textbox

Các thủ thuật liên quan đến ứng dụng, biểu mẫu và control

Moderators: tungcan5diop, QUANITGROBEST

User avatar
PhapSuXeko
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 295
Joined: Sun 03/05/2009 7:44 pm
Location: Tây Ninh
Has thanked: 1 time
Been thanked: 10 times
Contact:

[VB.NET] Chỉ cho nhập số trong Textbox

Postby PhapSuXeko » Tue 09/02/2010 10:34 pm

Thủ thuật: Chỉ cho nhập số vào Textbox
Tác giả: PhapSuXeko
Mô tả: quá rõ rồi


Sau đây là code em mới nghiên cứu và thử nghiệm thành công, nếu anh em nào có code hay hơn thì cho em học hỏi
  1. 'bỏ code trong sự kiện KeyPress
  2. Try
  3. If e.KeyChar = Chr(8) Then Exit Sub 'cho phép phím BackSpace hoạt động
  4. Dim s As String = e.KeyChar
  5. Dim f As Short = s / 1 'tạo lỗi
  6. Catch ex As Exception
  7. e.KeyChar = ""
  8. End Try
  9.  


Trang chủ phần mềm xem ảnh ImageGlass: http://www.imageglass.org

Superman
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 233
Joined: Thu 11/06/2009 8:27 am
Location: nơi sẽ đến...
Has thanked: 1 time
Been thanked: 4 times
Contact:

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby Superman » Wed 10/02/2010 12:07 am

cho nhập số với phím backspace
  1.         Function TrapKey(ByVal KCode As String) As Boolean
  2.             If (KCode >= 48 And KCode <= 57) Or KCode = 8 Then
  3.                 TrapKey = False
  4.             Else
  5.                 TrapKey = True
  6.             End If
  7.         End Function

để sử dụng quăng vô sự kiện KeyPress của textbox cần kiểm tra là xong :D
[vbnet] Private Sub txSoLuong_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txSoLuong.KeyPress
e.Handled = TrapKey(Asc(e.KeyChar)
End Sub[/vbnet]
My love wouldn't change...

User avatar
PhapSuXeko
Mạnh Thường Quân
Mạnh Thường Quân
Posts: 295
Joined: Sun 03/05/2009 7:44 pm
Location: Tây Ninh
Has thanked: 1 time
Been thanked: 10 times
Contact:

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby PhapSuXeko » Wed 10/02/2010 8:29 am

Superman wrote:cho nhập số với phím backspace
  1.         Function TrapKey(ByVal KCode As String) As Boolean
  2.             If (KCode >= 48 And KCode <= 57) Or KCode = 8 Then
  3.                 TrapKey = False
  4.             Else
  5.                 TrapKey = True
  6.             End If
  7.         End Function



Phải vầy chớ

[vbnet] Function TrapKey(ByVal KCode As Integer) As Boolean
If (KCode >= 48 And KCode <= 57) Or KCode = 8 Then
TrapKey = False
Else
TrapKey = True
End If
End Function[/vbnet]
Trang chủ phần mềm xem ảnh ImageGlass: http://www.imageglass.org

User avatar
xuanquy_th
Guru
Guru
Posts: 803
Joined: Tue 05/08/2008 9:15 pm
Location: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 times
Contact:

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby xuanquy_th » Wed 10/02/2010 8:51 am

  1. Private Sub txSoLuong_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txSoLuong.KeyPress
  2. Dim mK As Integer = Asc(e.KeyChar)
  3.         e.Handled = Not (( mK >= 48 And mK <= 57) Or mK = 8 Or mK = 46)
  4.     End Sub
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

KIDLINUX
Thành viên chính thức
Thành viên chính thức
Posts: 13
Joined: Thu 27/03/2008 10:52 am
Has thanked: 7 times

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby KIDLINUX » Thu 22/09/2011 8:41 am

Đây là code của mình
  1. Try
  2.             txtTien.Text = Convert.ToDecimal(txtTien.Text)
  3.             txtTien.SelectionStart = Len(txtTien.Text)
  4.         Catch
  5.             MsgBox("Dữ liệu không hợp lệ!!!", MsgBoxStyle.Information, "Thông báo...")
  6.             txtTien.SelectionStart = Len(txtTien.Text) - 1
  7.             txtTien.SelectionLength = 1
  8.         End Try


Mình sử dụng hàm có sẵn của VB.NET, nếu chuỗi không thể chuyển sang số thì báo lỗi

the_jupiter2
Posts: 5
Joined: Sun 19/06/2011 8:17 pm
Has thanked: 1 time
Been thanked: 1 time

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby the_jupiter2 » Sun 13/11/2011 7:17 pm

Dùng sự kiện nhấn phím:
  1. Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
  2.         If Not (Char.IsDigit(e.KeyChar) Orelse Char.IsControl(e.KeyChar)) Then Beep() : e.Handled = True ' nếu phím nhấn không phải là số hoặc phím     'control (nhấn "Backspace" để xóa số) -> thì beep cảnh báo và hủy sự kiện (không có phím được nhấn)
  3. End Sub
  4.  
Last edited by the_jupiter2 on Tue 20/03/2012 8:05 pm, edited 1 time in total.

kysudat
Thành viên năng nổ
Thành viên năng nổ
Posts: 60
Joined: Thu 18/09/2008 1:26 pm
Has thanked: 1 time

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby kysudat » Thu 01/12/2011 2:20 pm

Thanks,

phuocru91
Thành viên chính thức
Thành viên chính thức
Posts: 18
Joined: Tue 11/09/2012 1:15 am
Has thanked: 6 times

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby phuocru91 » Tue 11/09/2012 1:21 am

Bạn nào có thể giúp mình hàm nhập vào textbox tối đa 5 kí tự kiểu string.
Mình xin cảm ơn!

User avatar
akira
Thành viên danh dự
Thành viên danh dự
Posts: 354
Joined: Sat 25/10/2008 11:11 pm
Has thanked: 6 times
Been thanked: 69 times

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby akira » Tue 11/09/2012 11:07 am

phuocru91 wrote:Bạn nào có thể giúp mình hàm nhập vào textbox tối đa 5 kí tự kiểu string.
Mình xin cảm ơn!

set thuộc tính length của textbox là 5 thì đc rồi :-B

User avatar
QUANITGROBEST
Thành viên trung thành
Thành viên trung thành
Posts: 227
Joined: Thu 11/10/2012 9:47 am
Location: Thái Bình
Has thanked: 78 times
Been thanked: 24 times
Contact:

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby QUANITGROBEST » Mon 12/11/2012 2:07 pm

đây là cách tớ dùng, ngắn gọn chính xác tuyệt đối:
  1.  Private Sub txtNumber_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtNumber.KeyPress
  2.         If Not (IsNumeric(e.KeyChar)) Then
  3.             e.Handled = True
  4.         End If
  5.  
http://grobest.com.vn/[url]spasenhong.vn[/url]

Romeo8x
Thành viên chính thức
Thành viên chính thức
Posts: 23
Joined: Fri 18/04/2008 5:49 pm
Has thanked: 2 times
Been thanked: 14 times

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby Romeo8x » Fri 16/11/2012 9:47 am

Nếu chỉ nhập số nguyên (không có thập phân) thì có thể dùng MaskedTextbox có sẵn trong vb.net. MaskedTextbox khá hữu tiện lợi vì nó không chỉ giới hạn số không.
sau khi Insert bạn set thuộc tính Mask cho nó là xong

thedevil211992
Posts: 1
Joined: Wed 08/05/2013 3:26 pm

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby thedevil211992 » Wed 08/05/2013 3:38 pm

mình đang cần mà tìm mãi mới ra, thanks các pro nhé

User avatar
bocapit
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 393
Joined: Thu 02/10/2008 6:34 am
Location: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\
Has thanked: 1 time
Been thanked: 44 times

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby bocapit » Wed 08/05/2013 10:57 pm

QUANITGROBEST wrote:đây là cách tớ dùng, ngắn gọn chính xác tuyệt đối:
  1.  Private Sub txtNumber_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtNumber.KeyPress
  2.         If Not (IsNumeric(e.KeyChar)) Then
  3.             e.Handled = True
  4.         End If
  5.  


Thế copy vào thì sao?

User avatar
QUANITGROBEST
Thành viên trung thành
Thành viên trung thành
Posts: 227
Joined: Thu 11/10/2012 9:47 am
Location: Thái Bình
Has thanked: 78 times
Been thanked: 24 times
Contact:

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby QUANITGROBEST » Tue 14/05/2013 8:41 am

oh...mình chưa thử t/h copy. nếu copy ok thì cách này ko ổn nhỉ
http://grobest.com.vn/[url]spasenhong.vn[/url]

thuanchinapro07
Posts: 6
Joined: Thu 16/05/2013 5:21 pm
Been thanked: 2 times

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby thuanchinapro07 » Wed 22/05/2013 4:53 pm

Tất cả các trường hợp trên đều chết với copy pase (dùng chuột)
event "KeyPress" được run khi bạn thao tác với bàn phím. Với chuột thì chết !
p/s: có thể dùng " Regular-Expressions" - Biểu thức quy tắc để xử lý cùng or độc lập

User avatar
phantronghiep07
Thành viên chính thức
Thành viên chính thức
Posts: 29
Joined: Thu 29/04/2010 2:34 pm
Been thanked: 4 times

Re: [VB.NET] Chỉ cho nhập số trong Textbox

Postby phantronghiep07 » Wed 01/01/2014 4:18 pm

Mình dùng Visual Studio 2010, tìm không thấy thằng e.Handled, mình tìm ra cách này, có thể có ích cho một số bạn:
  1. Private Sub Txt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt.TextChanged
  2.         Dim s As String, i As Integer, vtri As Integer
  3.  
  4.         If Txt.Text = "" Then Exit Sub
  5.  
  6.         s = Txt.Text
  7.         If Len(s) = 1 And IsNumeric(s) = False Then
  8.             Txt.Text = ""
  9.             Exit Sub
  10.         End If
  11.  
  12.         vtri = Txt.SelectionStart
  13.         For i = 1 To Len(s)
  14.             If IsNumeric((Mid(s, i, 1))) = False Then
  15.                 Txt.Text = Mid(s, 1, i - 1) & Mid(s, i + 1, Len(s) - i)
  16.                 Txt.SelectionStart = vtri - 1
  17.                 Exit Sub
  18.             End If
  19.         Next i
  20.     End Sub


Return to “[.NET] Ứng dụng - Form và Control”

Who is online

Users browsing this forum: No registered users and 0 guests