【问题标题】:Visual Basic: Limit Textbox to specific charactersVisual Basic:将文本框限制为特定字符
【发布时间】:2021-04-28 03:54:03
【问题描述】:

我想要做的是有一个 Windows 窗体应用程序,一旦在文本框中写入一个数字并按下接受按钮,将打开另一个 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

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

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

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

【问题讨论】:

  • 类似:dim keys = "+-*/" if not (keys.Contains(e.KeyChar)) e.Handled = true。您可以找到很多与此相关的问题。
  • 我看到了它们,但它们都不起作用,我仍然可以输入几个“。”或“+”
  • 添加一个AndAlso 条件来检查当前TextBox.Text 内容是否与输入的Key 类似,方法类似。您可能想要转到KeyDown 事件。在这种情况下,设置e.SuppressKeyPress = true 而不是e.Handled = true 以取消按下的键。
  • TextBox 只能是在Validating 事件中使用Double.TryParse() 选中的数字。然后在带有运算符的数字框之间有一个 ComboBox。

标签: vb.net


【解决方案1】:

我最近不得不处理与该问题相关的事情。我编写了一个子程序来检查插入到 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多