Visual Basic 控制台 - 自行输入文本
Visual Basic console - Making text type itself out
我对此完全不感冒,所以我什至不知道如何开始编写这样的代码,除了我认为它可能使用某种计时器的部分。
基本上我希望文本在控制台上自行输入,所以假设一个基本的 Console.WriteLine ("Hello world") 将花费 5 秒来自行编写(因此每秒 2 个字母)。是否有执行此类操作的命令?或者我是否必须制作一些(希望不是)复杂的基于计时器的 Sub 来为我写出文本?
提前致谢!
使用这段代码得到效果:
Sub ConsoleType(stringToWrite As String, delay As Integer)
For Each i As Char In stringToWrite
Console.Write(i)
Threading.Thread.Sleep(delay)
Next
End Sub
调用函数ConsoleType
,它将是'typed'。 请注意,延迟以毫秒为单位。因为你想要 2 Letters/sec 的速度,你可以使用 500 的值。
不知道为什么有人会想要那样做。但这很容易做到,您可以将 Console.Out 重新分配给另一个文本流,它可以随意修改文本。
Class LazyWriter
Inherits System.IO.TextWriter
Private original As System.IO.TextWriter
Public Sub New(original As System.IO.TextWriter)
Me.original = original
End Sub
Public Overrides Sub Write(value As Char)
original.Write(value)
System.Threading.Thread.Sleep(500)
End Sub
Public Overrides ReadOnly Property Encoding As Encoding
Get
Return original.Encoding
End Get
End Property
End Class
用法:
Sub Main()
Console.SetOut(New LazyWriter(Console.Out))
Console.WriteLine("Hello slow world")
Console.ReadLine()
End Sub
哎呀,太慢了。
我对此完全不感冒,所以我什至不知道如何开始编写这样的代码,除了我认为它可能使用某种计时器的部分。 基本上我希望文本在控制台上自行输入,所以假设一个基本的 Console.WriteLine ("Hello world") 将花费 5 秒来自行编写(因此每秒 2 个字母)。是否有执行此类操作的命令?或者我是否必须制作一些(希望不是)复杂的基于计时器的 Sub 来为我写出文本?
提前致谢!
使用这段代码得到效果:
Sub ConsoleType(stringToWrite As String, delay As Integer)
For Each i As Char In stringToWrite
Console.Write(i)
Threading.Thread.Sleep(delay)
Next
End Sub
调用函数ConsoleType
,它将是'typed'。 请注意,延迟以毫秒为单位。因为你想要 2 Letters/sec 的速度,你可以使用 500 的值。
不知道为什么有人会想要那样做。但这很容易做到,您可以将 Console.Out 重新分配给另一个文本流,它可以随意修改文本。
Class LazyWriter
Inherits System.IO.TextWriter
Private original As System.IO.TextWriter
Public Sub New(original As System.IO.TextWriter)
Me.original = original
End Sub
Public Overrides Sub Write(value As Char)
original.Write(value)
System.Threading.Thread.Sleep(500)
End Sub
Public Overrides ReadOnly Property Encoding As Encoding
Get
Return original.Encoding
End Get
End Property
End Class
用法:
Sub Main()
Console.SetOut(New LazyWriter(Console.Out))
Console.WriteLine("Hello slow world")
Console.ReadLine()
End Sub
哎呀,太慢了。