我是一个简单的初学者,需要小帮助:
我有textbox1和textbox2。
假设你在textbox1中输入一个数字(例如21),我需要textbox2给我双重数字(42)。我的意思是我需要textbox2.text=2*textbox1.text
我使用了这个简单的代码:
Private Sub TextBox1_Textlength(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles TextBox1.TextChanged
TextBox2.Text = 2*TextBox1.Text
问题是:当我(在textbo1中)只写了一个数字时,一切都没问题,但是我不能写两个(或更多)数字。 如何设置延迟(间隔),允许我在激活textbox1_changed之前输入类似(例如1990)的数字?
答案 0 :(得分:1)
每次更改文本框的内容时都会触发TextChanged。所以没有办法阻止这种行为。也许您可以添加一个按钮并在按钮单击事件上移动重新计算,或者更好地为the Validating event添加事件处理程序。 退出控件时会触发此事件,并且您还可以选中检查输入并阻止退出TextBox控件
Private Sub textBox1_Validating(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
Dim v as Integer
if Not Int32.TryParse(TextBox1.Text, v) Then
e.Cancel = True
MessageBox.Show("Please type a valid number")
Else
TextBox2.Text = (v * 2).ToString
End If
End Sub
请注意,当您处理期望数值的用户输入时,您应特别注意,因为您不知道用户键入了什么。在这种情况下,Int32.TryParse似乎是合适的方法。
另一个建议是立即启用项目中的Option Strict ON,默认为OFF,这允许非常危险的代码,比如处理字符串就像是一个数字。
答案 1 :(得分:1)
你不需要。只允许每次触发TextChanged事件,第二个文本框将始终显示第一个值的两倍,因此当输入1时,它将显示2,当添加9时,它将显示38,所以上。您当然应该解决史蒂夫对验证和隐含类型转换的担忧。