• 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

Giới hạn chữ khi đăng ký tài khoản

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Moderators: tungblt, vuathongtin

bachlong1702
Thành viên chính thức
Thành viên chính thức
Posts: 34
Joined: Thu 29/09/2011 3:20 pm
Has thanked: 14 times

Giới hạn chữ khi đăng ký tài khoản

Postby bachlong1702 » Mon 10/10/2011 9:33 am

Các Pro giúp em tí. Bây giờ muốn giới hạn chữ khi đăng ký tài khoản như thường đăng ký các diễn đàn, chỉ sử dụng các ký tự a->z; 0->9 và "_" thì làm thế nào? Cho xin code???



User avatar
Dang Minh Du
Thành viên ưu tú
Thành viên ưu tú
Posts: 531
Joined: Wed 02/04/2008 2:08 pm
Location: RGames Team
Has thanked: 3 times
Been thanked: 17 times
Contact:

Re: Giới hạn chữ khi đăng ký tài khoản

Postby Dang Minh Du » Mon 10/10/2011 10:23 am

Bạn có thể làm như thế này: khi người dùng nhập, không cho nhập các kí tự mà bạn k muốn, trong sự kiện KeyPress của textbox, bạn set lại key = none khi người dùng nhập các phím cấm

  1.         private void TextBoxChiChoNhapSo_KeyPress(object sender, KeyPressEventArgs e)
  2.         {
  3.             string strChuSo = "0123456789abcdefghijklmnopqrstuvwxyz";
  4.             string strPhimNhap = e.KeyChar.ToString();
  5.             char cBackSpace = (char)Keys.Back;
  6.             if (strChuSo.IndexOf(strPhimNhap) == -1 && e.KeyChar != cBackSpace)
  7.             {
  8.                 e.KeyChar = (char)Keys.None;
  9.             }
  10.         }

bachlong1702
Thành viên chính thức
Thành viên chính thức
Posts: 34
Joined: Thu 29/09/2011 3:20 pm
Has thanked: 14 times

Re: Giới hạn chữ khi đăng ký tài khoản

Postby bachlong1702 » Mon 10/10/2011 10:53 am

VB.NET thì thế nào bạn. Mình mới học mà. Gà lắm

User avatar
lipton150786
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 345
Joined: Thu 18/11/2010 10:00 pm
Has thanked: 5 times
Been thanked: 29 times

Re: Giới hạn chữ khi đăng ký tài khoản

Postby lipton150786 » Mon 10/10/2011 3:35 pm

bạn có thể dùng code sau trong sự kiện KeyPress của textbox:
(đây là trường hợp chỉ cho nhập từ 0 ->9 bạn có thể mở rộng thêm)

Code: Select all

Private Sub txtPhone_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPhone.KeyPress
        If (e.KeyChar >= "0" And e.KeyChar <= "9")  Then
            'Cho phép nhập
            e.Handled = False
        Else
             'Không cho phép nhập
            e.Handled = True
        End If
End Sub

bachlong1702
Thành viên chính thức
Thành viên chính thức
Posts: 34
Joined: Thu 29/09/2011 3:20 pm
Has thanked: 14 times

Re: Giới hạn chữ khi đăng ký tài khoản

Postby bachlong1702 » Mon 10/10/2011 4:16 pm

OK bạn. Mình thử thế này thì nó vẫn đánh đc Unicode (đ, ê, ư, ....) là sao nhỉ?
Private Sub txttentaikhoan_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txttentaikhoan.KeyPress
Dim mK As Integer = Asc(e.KeyChar)
If Not (((mK >= 48 And mK <= 57) Or mK = 8 Or (mK >= 65 And mK <= 90) Or (mK >= 97 And mK <= 122) Or mK = 95 Or mK = 13)) Then
MsgBox("Tài khoản không dùng ký tự đặc biệt! Vui lòng chọn lại tên tài khoản!", MsgBoxStyle.Information, "Thông báo")
e.Handled = True
txttentaikhoan.Clear()
txttentaikhoan.Focus()
Exit Sub
End If
End Sub

User avatar
tungblt
Điều hành viên
Điều hành viên
Posts: 550
Joined: Mon 22/12/2008 5:22 pm
Location: quy nhơn
Has thanked: 8 times
Been thanked: 77 times
Contact:

Re: Giới hạn chữ khi đăng ký tài khoản

Postby tungblt » Mon 10/10/2011 6:29 pm

bạn chỉ giới hạn d ,e ,u chớ đâu có đ, ê ,ư ??

bachlong1702
Thành viên chính thức
Thành viên chính thức
Posts: 34
Joined: Thu 29/09/2011 3:20 pm
Has thanked: 14 times

Re: Giới hạn chữ khi đăng ký tài khoản

Postby bachlong1702 » Tue 11/10/2011 8:17 am

uh. Tớ nhầm. Thêm đk mK<256 nữa mà không được?
Private Sub txttentaikhoan_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txttentaikhoan.KeyPress
Dim mK As Integer = Asc(e.KeyChar)
If Not (((mK >= 48 And mK <= 57) Or mK = 8 Or (mK >= 65 And mK <= 90) Or (mK >= 97 And mK <= 122) Or mK = 95 Or mK = 13) and mK< 256) Then
MsgBox("Tài khoản không dùng ký tự đặc biệt! Vui lòng chọn lại tên tài khoản!", MsgBoxStyle.Information, "Thông báo")
e.Handled = True
txttentaikhoan.Clear()
txttentaikhoan.Focus()
Exit Sub
End If
End Sub

nhokstart
Thành viên chính thức
Thành viên chính thức
Posts: 38
Joined: Wed 13/04/2011 9:42 am
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: Giới hạn chữ khi đăng ký tài khoản

Postby nhokstart » Tue 11/10/2011 1:44 pm

do câu hỏi k rõ ràng... ~X( ~X( .. bạn thữ code này có đúng ý bạn k?

Code: Select all

    Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
        Dim str As String = "1234567890qwertyuiopasdfghjklzxcvbnm_"
        Dim strA As String = "QWERTYUIOPASDFGHJKLZXCVBNM" & str
     
            Dim chr As Char = Mid(Me.TextBox1.Text, Me.TextBox1.Text.Length) ' chr= ký tự vừa nhập
            If strA.LastIndexOf(chr) <> -1 Then
                ' nhap dung chu roi
            Else
                MessageBox.Show("nhap sai ", "mời ban nhap lai", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error)
                Me.TextBox1.Text = Me.TextBox1.Text.Remove(Me.TextBox1.Text.Length - 1, 1)
            End If
    End Sub

bachlong1702
Thành viên chính thức
Thành viên chính thức
Posts: 34
Joined: Thu 29/09/2011 3:20 pm
Has thanked: 14 times

Re: Giới hạn chữ khi đăng ký tài khoản

Postby bachlong1702 » Tue 11/10/2011 2:42 pm

Sao toàn báo lỗi
Argument 'Start' must be greater than zero.
ở dòng
Dim chr As Char = Mid(Me.TextBox1.Text, Me.TextBox1.Text.Length)
và giữa
If strA.LastIndexOf(chr) <> -1 Then

Else
là gì nhỉ? Mình mới lọ mọ tập làm thôi, cậu hướng dẫn kỹ tí nhé

nhokstart
Thành viên chính thức
Thành viên chính thức
Posts: 38
Joined: Wed 13/04/2011 9:42 am
Has thanked: 1 time
Been thanked: 2 times
Contact:

Re: Giới hạn chữ khi đăng ký tài khoản

Postby nhokstart » Tue 11/10/2011 5:36 pm

If strA.LastIndexOf(chr) <> -1 Then
{công việc khi tìm thấy ký tự chr trong chuỗi strA
chý ý: bạn nên xem hàm strA.LastIndexOf(chr) hoạt động ra sao_
bạn sẽ biết chúng ta xây dựng thuật toán ra sao. }
Else
{công việc khi không tìm thấy chr trong chuỗi strA}
end if
mình test rồi mà bạn..... :-? trên máy mình không thấy lỗi.

User avatar
lipton150786
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 345
Joined: Thu 18/11/2010 10:00 pm
Has thanked: 5 times
Been thanked: 29 times

Re: Giới hạn chữ khi đăng ký tài khoản

Postby lipton150786 » Wed 12/10/2011 5:50 pm

cài này mình đã test bên máy của mình rồi chạy Ok bạn xem thư nha:

Code: Select all

Private Sub txtTiendoi_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTiendoi.KeyPress
        If (e.KeyChar >= "a" And e.KeyChar <= "z") Or (e.KeyChar >= "0" And e.KeyChar <= "9") Or Asc(e.KeyChar) = 8 Or (e.KeyChar >= "A" And e.KeyChar <= "Z") Then
            e.Handled = False
        Else
            e.Handled = True
        End If
    End Sub


chúc mai mắn nha


Return to “Visual Basic .NET và C# (VB.NET & C#)”

Who is online

Users browsing this forum: MSN [Bot] and 3 guests