在文本框中键入字符串(VB.NET)

在文本框中键入字符串(VB.NET),vb.net,string,Vb.net,String,我试图让我的应用程序看起来像是在文本框中键入字符串。我的代码的主要问题似乎是thread.sleep并没有为每个字符休眠,而是为整个应用程序休眠。例如,如果我用字符串“hello”调用sub,它将停止100毫秒,然后文本框将同时显示“hello” Sub typeOut(ByVal toType As String) toType = toType.ToCharArray() For Each letter As Char In toType TextBox2.T

我试图让我的应用程序看起来像是在文本框中键入字符串。我的代码的主要问题似乎是thread.sleep并没有为每个字符休眠,而是为整个应用程序休眠。例如,如果我用字符串“hello”调用sub,它将停止100毫秒,然后文本框将同时显示“hello”

Sub typeOut(ByVal toType As String)
    toType = toType.ToCharArray()
    For Each letter As Char In toType
        TextBox2.Text = TextBox2.Text + letter
        Threading.Thread.Sleep(100)
    Next
End Sub

谢谢你的帮助

这是计时器的理想工作。你甚至可以这样做,你可以有一个以上的文本框被键入在同一时间在不同的速度

概念演示:我在一个新的Windows窗体项目窗体上放置了两个文本框和两个按钮,并使用以下代码实现了这一点:

Public Class Form1

    Private Class TypeText
        Property Target As TextBox
        Property TextToType As String

        Private tim As System.Windows.Forms.Timer
        Private currentChar As Integer

        Private Sub EmitCharacters(sender As Object, e As EventArgs)
            Target.Text &= TextToType.Chars(currentChar)
            currentChar += 1
            If currentChar = TextToType.Length Then
                RemoveHandler tim.Tick, AddressOf EmitCharacters
                tim.Dipose()
            End If
        End Sub

        Public Sub Start()
            AddHandler tim.Tick, AddressOf EmitCharacters
            tim.Start()
        End Sub

        'TODO: add Stop, Pause, Restart etc. methods if needed

        Public Sub New(target As TextBox, textToType As String, interval As Integer)
            Me.Target = target
            Me.TextToType = textToType
            tim = New System.Windows.Forms.Timer
            tim.Interval = interval
            currentChar = 0
        End Sub

    End Class

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim typer As New TypeText(TextBox1, "Hello, World!", 200)
        typer.Start()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim typer As New TypeText(TextBox2, "This is some other text.", 350)
        typer.Start()
    End Sub

End Class

您正在将UI线程置于休眠状态,然后它才能显示新字符。@如何解决此问题?请在loop@Plutonix谢谢,就在我看到这个之前就想出来了!更好的方法是根本不在UI线程上执行
Sleep()
。如果您可以使方法
异步
,那么等待任务将更干净。延迟(100)