退格键在文本框(VB.Net)中不起作用
下面是我将文本框中的数据输入限制为最多两位小数的代码。但是,删除文本框中输入的数据时,退格键不起作用退格键在文本框(VB.Net)中不起作用,vb.net,visual-studio,Vb.net,Visual Studio,下面是我将文本框中的数据输入限制为最多两位小数的代码。但是,删除文本框中输入的数据时,退格键不起作用 Private Sub txtbasicsalary_keypress(sender As Object, e As KeyPressEventArgs) Handles txtbasicsalary.KeyPress If Not Char.IsDigit(e.KeyChar) And Not e.KeyChar = "." Then e.Handled = True
Private Sub txtbasicsalary_keypress(sender As Object, e As KeyPressEventArgs) Handles txtbasicsalary.KeyPress
If Not Char.IsDigit(e.KeyChar) And Not e.KeyChar = "." Then
e.Handled = True
ElseIf e.KeyChar = "." And txtbasicsalary.Text.IndexOf(".") <> -1 Then
e.Handled = True
ElseIf e.KeyChar = "." Then
e.Handled = False
ElseIf e.KeyChar = ControlChars.Back Then
e.Handled = False
ElseIf Char.IsDigit(e.KeyChar) Then
If txtbasicsalary.Text.IndexOf(".") <> -1 Then
If txtbasicsalary.Text.Length >= txtbasicsalary.Text.IndexOf(".") + 3 Then 'replace 2 for greater numbers after decimal point
e.Handled = True
txtconveyance.Focus()
End If
End If
End If
End Sub
Private Sub txtbasicsalary\u keypress(发送方作为对象,e作为KeyPressEventArgs)处理txtbasicsalary.keypress
如果不是Char.IsDigit(e.KeyChar)而不是e.KeyChar=“”。,则
e、 已处理=真
ElseIf e.KeyChar=“”和txtbasicsalary.Text.IndexOf(“.”)则为-1
e、 已处理=真
ElseIf e.KeyChar=“”然后
e、 已处理=错误
ElseIf e.KeyChar=ControlChars.Back Then
e、 已处理=错误
ElseIf Char.IsDigit(e.KeyChar)然后
如果txtbasicsalary.Text.IndexOf(“.”)为-1,则
如果txtbasicsalary.Text.Length>=txtbasicsalary.Text.IndexOf(“.”)+3,则“小数点后的较大数字替换为2
e、 已处理=真
txt.Focus()
如果结束
如果结束
如果结束
端接头
请审阅并提出建议
谢谢
萨尔曼。几周前我也有类似的问题。 我编辑了你的代码!然后检查了一下。 现在它工作得很好。 享受吧! 此外,您还可以下载完整的工作项目表格
Private Sub txtbasicsalary\u KeyPress(发送方作为对象,e作为KeyPressEventArgs)处理txtbasicsalary.KeyPress
如果不是Char.IsDigit(e.KeyChar)而不是e.KeyChar=“”。,则
e、 已处理=真
如果结束
如果e.KeyChar=“”和txtbasicsalary.Text.IndexOf(“.”)为-1,则
e、 已处理=真
如果结束
如果e.KeyChar=“”,则
e、 已处理=错误
如果结束
如果e.KeyChar=Chr(Keys.Back),则
e、 已处理=错误
如果结束
如果Char.IsDigit(例如KeyChar),那么
如果txtbasicsalary.Text.IndexOf(“.”)为-1,则
如果txtbasicsalary.Text.Length>=txtbasicsalary.Text.IndexOf(“.”)+3,则“小数点后的较大数字替换为2
e、 已处理=真
txt.Focus()
如果结束
如果结束
如果结束
端接头
如果限制输入非常重要(相对于验证),为什么不使用NumericUpDown?第一个If语句也匹配一个退格,很容易通过调试器看到。我不使用调试器。我只写完美的代码,但我喜欢问它什么时候不起作用。我是说,我已经试了好几个小时了。我会在睡觉前问你,等我醒来我会得到答案。调试器?它不在安装列表中。我认为微软犯了一个错误,没有安装VS.Nah!我很完美!
Private Sub txtbasicsalary_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtbasicsalary.KeyPress
If Not Char.IsDigit(e.KeyChar) And Not e.KeyChar = "." Then
e.Handled = True
End If
If e.KeyChar = "." And txtbasicsalary.Text.IndexOf(".") <> -1 Then
e.Handled = True
End If
If e.KeyChar = "." Then
e.Handled = False
End If
If e.KeyChar = Chr(Keys.Back) Then
e.Handled = False
End If
If Char.IsDigit(e.KeyChar) Then
If txtbasicsalary.Text.IndexOf(".") <> -1 Then
If txtbasicsalary.Text.Length >= txtbasicsalary.Text.IndexOf(".") + 3 Then 'replace 2 for greater numbers after decimal point
e.Handled = True
txtconveyance.Focus()
End If
End If
End If
End Sub