【问题标题】:Creating a by letter effect with visual studio使用 Visual Studio 创建逐字母效果
【发布时间】:2014-01-30 04:59:09
【问题描述】:

我想在 Visual Studio 中创建一个效果,其中文本不是一次全部显示在屏幕上,而是一个字母一个字母地显示,每个字母出现之间有一定的时间。我计划从我的主模块打开一个不同的模块,其中包含此代码。有任何想法吗?到目前为止,这是我的编码。我正在制作命令提示符。

Public Sub Main()
    Dim line As String
    Console.Title = "Command"
    Console.WriteLine("Microsoft Windows [Version 6.3.9600]")
    Console.WriteLine("<c> 2013 Microsoft Corporation. All right reserved.")
    Console.WriteLine(" ")
    Do
        Console.Write("C:\Users\Bob>")
        Line = Console.ReadLine()
        If line = "help" Then
            Console.WriteLine("hello world")
            Console.WriteLine(" ")
        ElseIf line = "help1" Then
            Console.WriteLine("hello again, world!")
            Console.WriteLine(" ")
        ElseIf line = "exit" Then
            Environment.Exit(0)
        Else
            Console.WriteLine("Command not found.")
            Console.WriteLine(" ")
        End If
    Loop While line IsNot Nothing
End Sub

【问题讨论】:

    标签: vb.net visual-studio-2012 command prompt


    【解决方案1】:

    只需将您的所有Console.WriteLine 替换为Marquee("Text here")

    更新:正如 Walt 在 cmets 中指出的,应该注意这种方法将锁定应用程序,直到文本完成显示。如果不希望这样做,那么您应该考虑将其卸载到另一个线程或创建一个计时器事件。

         Sub Main()
    
                Marquee("Hello World")
                Console.ReadLine()
    
        End Sub
    
        Sub Marquee(StringToWrite As String)
    
            For i As Integer = 0 To StringToWrite.Length - 1
                Console.Write(StringToWrite.Substring(i, 1))
                Threading.Thread.Sleep(200)
            Next
    
    
    
        End Sub
    

    【讨论】:

    • 谢谢!这真的很有帮助!
    • 答案会起作用,但意识到您在更新文本时正在停止主应用程序线程。
    • @WaltRitscher 正确,我认为在这种情况下这不是问题,因为应该锁定 UI,直到屏幕上的文本完全显示。我们可以将它卸载到另一个线程或连接一个计时器事件,但我再次认为它不是必需的或在问题的范围内。绝对值得指出的是,这将锁定应用程序。我已更新我的答案以包含此警告。
    【解决方案2】:

    对于 Windows 窗体应用程序,我最好的方法是:

    Public Class Form1
        Dim M As Integer = 1
        Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            Dim T As String = "" + TextBox1.Text
            Label1.Text = Label1.Text + Mid(T, M, 1)
            M = M + 1
        End Sub
        'You can use any trigger here
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Timer1.Enabled = True
        End Sub
    End Class
    

    【讨论】:

      猜你喜欢
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多