Visual Basic:将文本框限制为特定字符

时间:2021-01-24 01:05:05

标签: vb.net

我想做的是拥有一个 Windows 窗体应用程序,一旦在文本框中写入一个数字并按下接受按钮,将打开另一个窗体,其中另一个数字写入另一个文本框中,第二个按钮将按下,它会显示第三种形式,应该只接受四位数字“+”“-”“*”“/”,每个数字代表一个基本的数学运算,但是,我目前面临两个问题。

对于前两个框,我能够做到它只允许数字,问题是,一旦写入数字,我就无法删除它,而且我可以输入多个“。”对于浮点数,这意味着我可以写像“5136....5.25”这样的数字,这显然会在最后计算完成时导致错误。我还没有找到限制那个“.”的方法。只有一个,我也无法修复删除或后退按钮。 这是我使用的代码。

'Button
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Form4.n1 = TextBox1.Text
    Me.Hide()
    Form2.Show()
End Sub
'Textbox
Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    e.Handled = Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or Asc(e.KeyChar = "8"))
End Sub

现在使用第三个窗体我有另一个问题,我需要限制它只接受“+”“-”“*”或“/”(只有其中一个,不能更多,也没有数字或字符)

我觉得这些问题的解决方案是一样的,我需要以某种方式限制“。”的数量。并且 simbols 只有一个,我需要将第三个框中的 simbols 限制为这四个。

有什么想法吗?另外,我是个新手,所以任何提示或解释都将不胜感激,即使它使答案更长

1 个答案:

答案 0 :(得分:0)

我最近不得不处理与该问题相关的事情。我编写了一个子程序来检查插入到 de TetBox 中的字符,并根据情况允许我们输入或不输入。

在下面的代码中,我检查按下的键是否是点“.”。然后,我检查文本框上是否有前一个点。我使用 IndexOf 方法返回字符的位置。如果返回“-1”,则表示Textbox中没有点,可以输入。

 If e.KeyChar = "." Then   
     If textBox.Text.IndexOf(".") = -1 Then   
         e.Handled = False
 Else                                        
     e.Handled = True
 End If
               

如果您在输入第一个点后尝试输入另一个点,则行 textBox.Text.IndexOf(".") 将返回一个与 -1 不同的值,因此我们将无法输入它。

关于删除按钮,我使用以下几行来管理控制键:

If Char.IsControl(e.KeyChar) Then
   e.Handled = False
Else

您可以尝试使用这种方法来限制第三种形式中的符号,更改(点)“。”对于您需要专门使用的密钥。