【发布时间】:2015-10-07 13:21:09
【问题描述】:
我对此完全不感兴趣,所以我不知道如何开始编写这样的代码,除了我认为它可能使用某种计时器的部分。 基本上我希望文本在控制台上自己输入,所以说一个基本的 Console.WriteLine(“Hello world”)需要 5 秒来写自己(所以每秒 2 个字母)。有没有这样的命令?还是我必须制作一些(希望不是)基于复杂计时器的 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,它将被“输入”。 请注意,延迟以毫秒为单位。由于您想要 2 个字母/秒的速度,您可以使用 500 的值。
【讨论】:
Console.Write(Environment.NewLine),即Sub ConsoleType(stringToWrite As String, delay As Integer)后
ConsoleType(String.Format("Some {0}","Text"),200) 获取输出 Some Text
不知道为什么有人会想要这样做。但这很容易做到,您可以将 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
哎呀,太慢了。
【讨论】: