• 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

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
PhapSuXeko
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 295
Ngày tham gia: CN 03/05/2009 7:44 pm
Đến từ: Tây Ninh
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

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

Gửi bàigửi bởi PhapSuXeko » T.Ba 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
Bài viết: 232
Ngày tham gia: T.Năm 11/06/2009 8:27 am
Đến từ: nơi sẽ đến...
Has thanked: 1 time
Been thanked: 4 time
Liên hệ:

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

Gửi bàigửi bởi Superman » T.Tư 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
  1.     Private Sub txSoLuong_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txSoLuong.KeyPress
  2.         e.Handled = TrapKey(Asc(e.KeyChar)
  3.     End Sub
my love wouldn't change...

Hình đại diện của người dùng
PhapSuXeko
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 295
Ngày tham gia: CN 03/05/2009 7:44 pm
Đến từ: Tây Ninh
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

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

Gửi bàigửi bởi PhapSuXeko » T.Tư 10/02/2010 8:29 am

Superman đã viết: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ớ

  1.         Function TrapKey(ByVal KCode As Integer) 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
Trang chủ phần mềm xem ảnh ImageGlass: http://www.imageglass.org

Hình đại diện của người dùng
xuanquy_th
Guru
Guru
Bài viết: 792
Ngày tham gia: T.Ba 05/08/2008 9:15 pm
Đến từ: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

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

Gửi bàigửi bởi xuanquy_th » T.Tư 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
Bài viết: 12
Ngày tham gia: T.Năm 27/03/2008 10:52 am
Has thanked: 7 time

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

Gửi bàigửi bởi KIDLINUX » T.Năm 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
Bài viết: 5
Ngày tham gia: CN 19/06/2011 8:17 pm
Has thanked: 1 time
Been thanked: 1 time

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

Gửi bàigửi bởi the_jupiter2 » CN 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.  
Sửa lần cuối bởi the_jupiter2 vào ngày T.Ba 20/03/2012 8:05 pm với 1 lần sửa.

kysudat
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 60
Ngày tham gia: T.Năm 18/09/2008 1:26 pm
Has thanked: 1 time

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

Gửi bàigửi bởi kysudat » T.Năm 01/12/2011 2:20 pm

Thanks,

phuocru91
Thành viên chính thức
Thành viên chính thức
Bài viết: 18
Ngày tham gia: T.Ba 11/09/2012 1:15 am
Has thanked: 6 time

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

Gửi bàigửi bởi phuocru91 » T.Ba 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!

Hình đại diện của người dùng
akira
Thành viên danh dự
Thành viên danh dự
Bài viết: 354
Ngày tham gia: T.Bảy 25/10/2008 11:11 pm
Has thanked: 6 time
Been thanked: 69 time

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

Gửi bàigửi bởi akira » T.Ba 11/09/2012 11:07 am

phuocru91 đã viết: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

Hình đại diện của người dùng
QUANITGROBEST
Thành viên trung thành
Thành viên trung thành
Bài viết: 227
Ngày tham gia: T.Năm 11/10/2012 9:47 am
Đến từ: Thái Bình
Has thanked: 78 time
Been thanked: 24 time
Liên hệ:

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

Gửi bàigửi bởi QUANITGROBEST » T.Hai 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
Bài viết: 23
Ngày tham gia: T.Sáu 18/04/2008 5:49 pm
Has thanked: 2 time
Been thanked: 14 time

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

Gửi bàigửi bởi Romeo8x » T.Sáu 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
Bài viết: 1
Ngày tham gia: T.Tư 08/05/2013 3:26 pm

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

Gửi bàigửi bởi thedevil211992 » T.Tư 08/05/2013 3:38 pm

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

Hình đại diện của người dùng
bocapit
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 393
Ngày tham gia: T.Năm 02/10/2008 6:34 am
Đến từ: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\
Has thanked: 1 time
Been thanked: 44 time

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

Gửi bàigửi bởi bocapit » T.Tư 08/05/2013 10:57 pm

QUANITGROBEST đã viết:đâ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?

Hình đại diện của người dùng
QUANITGROBEST
Thành viên trung thành
Thành viên trung thành
Bài viết: 227
Ngày tham gia: T.Năm 11/10/2012 9:47 am
Đến từ: Thái Bình
Has thanked: 78 time
Been thanked: 24 time
Liên hệ:

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

Gửi bàigửi bởi QUANITGROBEST » T.Ba 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
Bài viết: 6
Ngày tham gia: T.Năm 16/05/2013 5:21 pm
Been thanked: 2 time

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

Gửi bàigửi bởi thuanchinapro07 » T.Tư 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

Hình đại diện của người dùng
phantronghiep07
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Năm 29/04/2010 2:34 pm
Been thanked: 4 time

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

Gửi bàigửi bởi phantronghiep07 » T.Tư 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


Quay về “[.NET] Ứng dụng - Form và Control”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách