在VB Net中每秒更新文本块的文本

Posted

技术标签:

【中文标题】在VB Net中每秒更新文本块的文本【英文标题】:Update text of textblock in every sec in VB Net 【发布时间】:2013-03-15 11:06:53 【问题描述】:

我有一个 Sub,它在我创建新窗口时处理。它使用 Irrklang 库加载和播放 mp3 文件。但是如何更新播放位置。我听说我可以使用计时器,但是如何在 sub 中使用它?

Private Sub  MainWindow_Loaded(sender As Object, e As RoutedEventArgs)

    Dim Music = MyiSoundengine.Play2D("Music/001.mp3")

    I Want to update this in every sec!
    Dim Music_Playposition = Music.Playpostion

    End Sub

【问题讨论】:

【参考方案1】:

您不能在方法/子中使用计时器。计时器工作的唯一方法是定期引发事件;在计时器的情况下,它被称为“滴答”事件,每次计时器“滴答”时都会引发。

您可能已经知道什么是事件——您的 MainWindow_Loaded 方法正在处理一个事件,即 MainWindow 类的 Loaded 事件。

所以你需要做的是向你的应用程序添加一个计时器,处理它的 Tick 事件,然后在该事件处理程序中用当前位置更新你的文本框。

例如:

Public Class MainWindow

    Private WithEvents timer As New System.Windows.Threading.DispatcherTimer()

    Public Sub New()
        ' Initialize the timer.
        timer.Interval = new TimeSpan(0, 0, 1);  ' "tick" every 1 second

        ' other code that goes in the constructor
        ' ...
    End Sub

    Private Sub timer_Tick(sender As Object, e As EventArgs) Handles timer.Tick
        ' TODO: Add code to update textbox with current position
    End Sub

    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs)
        ' Start the timer first.
        timer.Start()

        ' Then start playing your music.
        MyiSoundengine.Play2D("Music/001.mp3")
    End Sub

    ' any other code that you need inside of your MainWindow class
    ' ...

End Class

注意在计时器对象的类级声明中使用WithEvents 关键字。这使得仅使用事件处理程序上的Handles 语句来处理其事件变得很容易。否则,您必须在构造函数内部使用AddHandler 将事件处理程序方法连接到所需的事件。

【讨论】:

以上是关于在VB Net中每秒更新文本块的文本的主要内容,如果未能解决你的问题,请参考以下文章

Access 数据库未通过 Vb.net 中的文本框更新

C#/VB.NET 给PDF文档添加文本/图像水印

VB.NET操作SQL SERVER 2008数据库,想把文本框中输入的字符串转化为数字进行数据库的更新,却一直失败

C#/VB.NET 将文本内容更改为大写

新手关于VB.net的问题

数据库 VB.net