【发布时间】: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