Хитрость заключается в том, что метка заставляет себя перекрашивать новый текст перед вызовом метода Speak
.Тот факт, что вы присваиваете новое текстовое значение элементу управления, не гарантирует, что он немедленно будет перекрашен с этим новым текстом.Как правило, система ждет, пока она не будет выполнять перерисовки, но вы не даете ей простаивать, прежде чем вы скажете ей выполнить метод Speak
.
Самый простой способ исправить это в .NET - этовызовите метод Refresh
.Все элементы управления имеют его, и он делает именно то, что вы хотите здесь.Он заставляет элемент управления сделать недействительной свою клиентскую область (то есть ту часть, которую вы можете видеть, включая текст) и немедленно перерисовать ее.
Измените код так, чтобы он выглядел следующим образом:
label.Text = "words words"
label.Refresh()
voice.Speak(label.Text)