我正在尝试播放并在我输入文本框的某个时间停止计时器,因为我想在完成时间后播放音频。 你能帮助我吗?
这是我的代码:
Private Sub Simulate_Click(sender As Object, e As EventArgs) Handles Simulate.Click
AxWindowsMediaPlayer1.Show()
AxWindowsMediaPlayer1.Ctlcontrols.play()
AxWindowsMediaPlayer1.Ctlcontrols.fastForward()
Simulate.Enabled = False
If TextBox1.Text = 1 Then
My.Computer.Audio.Play(My.Resources._1, AudioPlayMode.Background)
ElseIf TextBox1.Text = 2 Then
My.Computer.Audio.Play(My.Resources._2, AudioPlayMode.Background)
如果我输入说例如2秒,则播放音频文件需要两秒钟。
答案 0 :(得分:1)
在表单上删除一个计时器控件,并将其设置为您希望停止的时间间隔。在计时器的勾选事件中,禁用计时器,使其不再发射,然后播放您的声音。
在将Enabled属性设置为true后,计时器将在X毫秒内触发。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
tmrAlarm.Interval = TimeSpan.FromSeconds(2).TotalMilliseconds
tmrAlarm.Enabled = True
End Sub
Private Sub tmrAlarm_Tick(sender As Object, e As EventArgs) Handles tmrAlarm.Tick
tmrAlarm.Enabled = False
MsgBox("Beep!")
End Sub
在此示例中,按下按钮后2秒将弹出一个消息框。
它需要将Timer
控件放在名为tmrAlarm
的表单上。
此方法可让您的应用程序保持响应,而无需担心复杂的多线程问题。
答案 1 :(得分:0)
如果您不关心应用程序响应能力,那么简单的System.Threading.Thread.Sleep(timeInSeconds * 1000)
就可以解决问题。这将锁定应用程序的睡眠时间。
如果响应性是一个问题,您需要播放音频作为对您将创建的新事件的响应。然后你需要启动一个睡眠的新线程,并在睡眠后引发你的新事件。
答案 2 :(得分:0)
你必须添加一个名为“Timer1”的计时器才能工作。如果文本框包含数字“1”,则时间设置为1000毫秒并启动计时器,当1000毫秒启动时,它将开始播放声音,然后停止计时器。
Public Class Form1
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
If TextBox1.Text.Contains("1") Then
Timer1.Interval = ("1000")
Timer1.Start()
ElseIf TextBox1.Text.Contains("2") Then
Timer1.Interval = ("2000")
Timer1.Start()
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Timer1.Stop()
My.Computer.Audio.Play(My.Resources._1, AudioPlayMode.Background)
End Sub
End Class