validate textbox to accept numbers only upto 8 places - vb.net

I have a text box where phone number must be entered I want to limit the digits to be entered in the text box only upto 8 places how to do it?

You can subscribe for the KeyDown event to see which key is pressed, then just allow Numeric & backspace key
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.MaxLength = 8
AddHandler TextBox1.KeyDown, AddressOf HandleTbKeyDown
End Sub
Private Sub HandleTbKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
If Not ((e.KeyValue >= 48 AndAlso e.KeyValue <= 57) OrElse e.KeyValue = 46) Then
e.Handled = True
End If
End Sub

For text box having only numbers you can do by this:-
if(!((e.keyCode>=48&&e.keyCode<=57)||(e.keyCode==46)))
Also you can check the length to 8 like
Texbox MaxLength = 8

Use a MaskedTextBox. See this link. Though the example is for C# it will work similarly. Your Mask property will be 00000000
for e.g.
myMaskTextBox.Mask = "00000000";
You can use it format data for dates, currencies etc. Also there is a handy BeepOnError property. Again see at the end of example.

Related

Barcode Scanning issues

After a long practice and consulting the internet I have been able to differentiate
keyboard input from scanned input successfully.
I have 2 textboxes (txtScannedInput and txtKeyboardInput) and
1 label (lblDisplayScannedInput) to display the scanned input.
Everything works perfectly when the txtScannedInput textbox has focus before
a barcode is scanned.
My only problem is when the txtKeyboardInput has focus before
a barcode is scanned the first 2 characters of the barcode stays in the txtKeyboardInput
while the rest of the charcters move to the txtScannedInput.
(I know it is because my calculations to differentiate keyboard input from
scanned input is based on keypress, so by the time it get to know that the input is a scanned
one 2 of the characters have already been entered in the txtKeyboardInput and it moves to rest to the txtScannedInput.)
Can anyone help me to improve on my code or is there a better way of doing this?
Public Class frmFinalBarCode
Dim datLastTimePress As DateTime = Date.Now
Private Sub frmFinalBarCode_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If (DateTime.Now.Subtract(datLastTimePress).Milliseconds > 50) Then
Me.Text = "This is a keyboard input"
Else
Me.Text = "This is a Scanner input"
datLastTimePress = DateTime.Now ' Initialize the timer for the first character
txtScannedInput.Focus()
End If
End Sub
Private Sub frmFinalBarCode_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
datLastTimePress = Date.Now
End Sub
Private Sub txtScannedInput_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtScannedInput.KeyPress
lblDisplayScannedInput.ResetText()
lblDisplayScannedInput.Text = txtScannedInput.Text
End Sub
End Class

Detect alphabet or numeric and then send them to textbox on a form?

Based on this question,
But in my case i have a form and textboxt,
i need to detect alphabet or numeric and then send them to textbox same as above but on my form not datagrid.
How to do that? thanks
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
e.Handled = Not (Char.IsLetterOrDigit(e.KeyChar) OrElse (e.KeyChar = ChrW(Keys.Back)))
End Sub

KeyPress Event in Visual Basic?

I think this is possible, but I don't know... I want to check when the key A is pressed to move the player to the left, but for now just a messagebox.
Here is all the code I could find on the internet, it didn't work...
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
If e.KeyCode = Keys.A Then
MsgBox("Left")
End If
End Sub
I am not asking how to do things when you enter stuff in a textbox, I'm asking how to run a event when you press a key.
Try this...
Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Asc(e.KeyChar) = 97 Or Asc(e.KeyChar) = 65 Then
MsgBox("hello")
End If
End Sub
This should work. 97 is 'a' and 65 is 'A' in ASCII.
Try this
Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyCode = Keys.A Then
MsgBox("Left")
End Sub
or
Private Sub textBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
Handles textBox1.KeyDown
If e.KeyCode = Keys.A Then
MsgBox("Left")
end if
End Sub
You probably want to set the form's KeyPreview property to true.
Doing this makes sure the form sees all key events even if one of
its child controls
Use the KeyEventArgs.KeyData property to see what key was pressed.
KeyCode , KeyData and KeyValue are members of
System.Windows.Forms.KeyEventArgs in the KeyUp and KeyDown events
only.
They actually simplified this from VB6.The new way with VB 2017 is...
Private Sub Textbox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtProblem.KeyPress
If e.KeyCode = "a" or e.KeyCode = "A" Then
MsgBox("Left")
End If
End Sub
So, I got one step in the right direction maybe it will help. I'm trying to give control of the paddle to the player in a game of pong and found if textbox1 is highlighted or "has focus" then these commands will execute and I can move the paddle around the screen. The problem is there is also a textbox filling up with letters in the corner of the screen as this happens I'm not sure how to get rid of just yet. Perhaps it will be useful though.
Private Sub
Textbox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Asc(e.KeyChar) = 97 Then 'a
Paddle.Location = New Point(Paddle.Location.X - 10, Paddle.Location.Y)
End If
If Asc(e.KeyChar) = 119 Then 'w
Paddle.Location = New Point(Paddle.Location.X, Paddle.Location.Y - 10)
End If
If Asc(e.KeyChar) = 100 Then 'd
Paddle.Location = New Point(Paddle.Location.X + 10, Paddle.Location.Y)
End If
If Asc(e.KeyChar) = 115 Then 's
Paddle.Location = New Point(Paddle.Location.X, Paddle.Location.Y + 10)
End If
End Sub
Also, you can use this command to give focus to the textbox from a different event
Public Sub ControlSetFocus(control As Control)
If Control.CanFocus Then
control.Focus()
End If
End Sub
This works for me
If e.KeyChar = Convert.ToChar("a") Then
MsgBox(Convert.ToChar("a") +"enter key pressed ")
End If
Also you can use numbers and uppercase in ""

One Textbox Value Greater then other, Avoid and Beep

I have two Textboxes in Visual Basic 2010
Textbox1
Textbox2
Now I want that if user enter value(integer) in Textbox2, if the value in Textbox2 is Greater than Textbox1, so this will do a beep and also avoid him to do like this
Example: If User write 5 in Textbox1 and now he is writing 8 in Textbox2 so as 8 is grater than 5, so i want that Textbox2 ignore with a beep.
I have this code but this is not working, please if some one help me:
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
Dim valx1 As Integer
Dim valx2 As Integer
valx1 = (Val(TextBox1.Text))
valx2 = (Val(TextBox2.Text))
If (valx1) > (valx2) Then
Beep()
e.Handled = True
End If
End Sub
This code will suits your requirement, By the way using a beeb sound for alerting the user, will make him/her disturbed.
Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
if val(TextBox1.Text.trim) > val(TextBox2.Text.trim & e.keychar) then
Beep()
e.Handled = True
end if
End Sub

How to use the textbox1_keydown?

How do I use key_down event in my vb.net? I have seen so many codes on google but none of them working I don't understand where its going wrong
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx#Y600
http://www.daniweb.com/software-development/vbnet/threads/114278
http://forums.devshed.com/net-development-87/keypress-allow-only-letters-and-numbers-with-max-lenght-of-528176.html
http://social.msdn.microsoft.com/Forums/pl-PL/Vsexpressvb/thread/aab1d64c-a9dc-4dd2-8d2f-83a414e9c909
http://www.bigresource.com/VB-Lock-textbox-so-the-user-only-can-enter-numbers-a8mxDB7ouq.html
http://forums.devx.com/archive/index.php/t-96951.html
Above are the links I googled and they are many links =I have googled to work on key_down events on vb.net But my god its aint working I dont know what to do.
1) How do I use textbox1_keydown event are there any necessary steps taken before using it ( why its aint workin?)
2) can anyone post a sample of these "a textbox that allows only numbers from user using key_down"
3) I see people using e.keychar but in my vb.net(2008) I dont have that keyword I guess e.keycode must be used is that right? or e.keyvalue?
4) I see e.keycode = keys.A but I need to accept 'a' not "A" How do I specify a number or letter with their ascii value ?
Are you not able to use KeyPress for some reason?
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Char.IsDigit(e.KeyChar) Then
e.Handled = True 'Prevents all numbers from from being placed
End If
If Convert.ToInt32(e.KeyChar) = 97 Then
e.Handled = True 'Prevents "a" from being placed
End If
End Sub
This should do what you need. You can find a list of ASCII codes here if you don't have one already. Take a look at the intellisense for Char. and check out all the useful things you can filter on. You can also specify exact ASCII values by converting them to int.
It sounds like you are getting a little confused between KeyDown and KeyPress.
I think this is what you are looking for:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress
If Not Char.IsNumber(e.KeyChar) Then
e.Handled = True
End If
End Sub
If you are trying to enter only numbers and the lower case "a" then:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress
If Not (Convert.ToInt32(e.KeyChar) = Asc("a") Or Char.IsNumber(e.KeyChar)) Then
e.Handled = True
End If
End Sub