我想知道在label.text
如果我有以下内容:
label.Text = "words words"
voice.Speak(label.Text)
我希望表单上的标签在发言之前显示“单词单词”。我是vb的初学者,我唯一能想到的就是使用计时器。只是想知道是否有更简单/更复杂的解决方案。谢谢你的帮助
答案 0 :(得分:3)
使用SpeakAsync()方法,以便语音引擎不会阻止您的UI线程。这解决了许多问题,包括延迟绘制标签。
答案 1 :(得分:1)
诀窍是在调用Speak
方法之前强制标签用新文本重新绘制自己。仅仅因为您为控件分配了新的文本值并不能确保它立即重新绘制该文本。通常,系统会一直等待它进行重绘,但是在你告诉它执行Speak
方法之前你不会让它闲置。
在.NET中解决此问题的最简单方法是调用Refresh
method。所有控件都有它,它完全符合你的要求。它强制控件使其客户区域无效(意味着您可以看到的部分,包括文本)并立即重绘。
将您的代码更改为:
label.Text = "words words"
label.Refresh()
voice.Speak(label.Text)