Vb.net 在vb中更改延迟文本框文本

Vb.net 在vb中更改延迟文本框文本,vb.net,timer,delay,intervals,Vb.net,Timer,Delay,Intervals,我是一个简单的初学者,需要一些帮助: 我有textbox1和textbox2。 假设当你在文本框1中输入一个数字(例如21)时,我需要文本框2给我双倍的数字(42)。我的意思是我需要textbox2.text=2*textbox1.text 我使用了以下简单代码: Private Sub TextBox1_Textlength(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChan

我是一个简单的初学者,需要一些帮助: 我有textbox1和textbox2。 假设当你在文本框1中输入一个数字(例如21)时,我需要文本框2给我双倍的数字(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年)?

TextChanged每次更改textbox的内容时都会触发。所以没有办法阻止这种行为。也许您可以添加一个按钮并在按钮单击事件上移动重新计算,或者更好地为其添加一个事件处理程序。 退出控件时会触发此事件,您还可以选择检查输入并阻止退出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 
请注意,当您处理预期为数值的用户输入时,您应该特别注意,因为您不知道用户键入什么。在这种情况下,这种方法似乎是合适的


另一个建议是在项目中立即启用,默认值为OFF,这允许使用非常危险的代码,例如将字符串当作数字处理。

您不需要这样做。只需允许每次触发TextChanged事件,第二个文本框将始终显示第一个文本框值的两倍,因此当输入1时,它将显示2,当添加9时,它将显示38,依此类推。当然,您应该解决Steve对验证和隐含类型转换的担忧