【问题标题】:Visual Basic console - Making text type itself outVisual Basic 控制台 - 制作文本类型本身
【发布时间】:2015-10-07 13:21:09
【问题描述】:

我对此完全不感兴趣,所以我不知道如何开始编写这样的代码,除了我认为它可能使用某种计时器的部分。 基本上我希望文本在控制台上自己输入,所以说一个基本的 Console.WriteLine(“Hello world”)需要 5 秒来写自己(所以每秒 2 个字母)。有没有这样的命令?还是我必须制作一些(希望不是)基于复杂计时器的 Sub 来为我写出文本?

提前致谢!

【问题讨论】:

标签: vb.net console basic


【解决方案1】:

使用这段代码得到效果:

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 的值。

【讨论】:

  • 谢谢,这真的很简单,解决了我的问题:)
  • 你知道我可以让每个“ConsoleType”写到一个新行吗?
  • 在函数第一行后添加Console.Write(Environment.NewLine),即Sub ConsoleType(stringToWrite As String, delay As Integer)
  • 再次感谢您!如果可以的话,还有一件事。我是否可以使用 {0} 以与 Console.WriteLine 相同的方式使此 ConosleType 与变量交互,或者这不可能/需要太多代码?
  • 好吧,{0} 和 {1} 将不再起作用,但您可以使用 ConsoleType(String.Format("Some {0}","Text"),200) 获取输出 Some Text
【解决方案2】:

不知道为什么有人会想要这样做。但这很容易做到,您可以将 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

哎呀,太慢了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多