我的表单上有一个按钮,标签是“对话”,当用户单击它时,synth.SpeakAsync(Textbox.text)会被触发,该按钮将其文本更改为“停止说话”。
但是,当用户单击“停止说话”,从而触发synth.speakAsyncCancelAll()时,它不会取消“中途发言”。
这是我的代码:
Private Sub btnSpeak_Click(sender As System.Object, e As System.EventArgs) Handles btnSpeak.Click
If RTextBox.Text = "" Then Exit Sub
Dim synth As New SpeechSynthesizer
synth.Rate = -2
If btnSpeak.Text = "Stop Speaking" Then
btnSpeak.Text = "Speak"
synth.SpeakAsyncCancelAll()
ElseIf btnSpeak.Text = "Speak" Then
btnSpeak.Text = "Stop Speaking"
synth.SpeakAsync(RTextBox.Text)
End If发布于 2014-09-12 15:02:26
每次单击该按钮时,都会创建一个新的语音合成器。将昏暗的合成器作为新的语音合成器从按钮单击事件。这样,每次都会引用相同的合成器,然后就会触发语音取消事件。
发布于 2014-09-11 15:35:12
SpeakAsyncCancelAll()将在被调用后引发SpeakCompleted事件,您可以使用以下代码侦听它:
Imports System.Speech.Synthesis
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim synthesizer As New SpeechSynthesizer()
AddHandler synthesizer.SpeakCompleted, AddressOf speakCompleted
End Sub
Private Sub speakCompleted(ByVal sender As Object, ByVal e As SpeakCompletedEventArgs)
Dim cancelled = e.Cancelled
End Sub
End Classhttps://stackoverflow.com/questions/25768879
复制相似问题