Isma Tipu Ответов: 1

Вызов метода в главном окне WPF


У меня возникла проблема, я хочу открыть главное окно, а затем я хочу, чтобы окно говорило "добро пожаловать в почтовую систему" . Я не знаю, что не так , он сначала говорит это, а потом появляется окно , я хочу, чтобы появилось окно, а затем произнесите сообщение

мой код
публичный частичный класс MainWindow : MetroWindow
{


private SpeechRecognitionEngine sre;
частный синтезатор SpeechSynthesizer;
публичное главное окно()
{
метод InitializeComponent();


синтезатор = новый речевой синтезатор();
sre = новый SpeechRecognitionEngine();
говорить();
}


общественного недействительными говорить()
{

синт.SetOutputToDefaultAudioDevice();
синт.Говорите ("Добро пожаловать в систему электронной почты");

Что я уже пробовал:

сделал объект в методе того же класса и вызвал главное окно, не получилось

[no name]

"он сначала говорит это, а потом появляется окно", он делает это, потому что это именно то, что вы ему сказали.
"окно появится, а затем произнесите сообщение", а затем используйте что-то другое, кроме конструктора окна.

Isma Tipu

я не знаю, что не так,вот почему я отправил этот вопрос. что-то другое не поможет. как мне это сделать ? mainwindow () поставляется вместе с xaml. он загружается при создании класса.Initializecomponent() должен заставить окно появиться первым, но это не так

[no name]

Ах, так вы ничего не знаете о событийном программировании? InitializeComponent не вызывает появления окна. Возьмите себе книгу или найдите несколько учебных пособий по основному событийному программированию и проработайте их.

Philippe Mori

InitializeComponent только создает объект памяти. Пользовательский интерфейс отображается при вызове функции Show. И очевидно, что эта функция не может быть вызвана до выполнения конструктора, так как она вызывается на возвращаемом объекте. Не имеет значения, показываете ли вы явно окна или фреймворк делает это, потому что он был указан для использования в качестве главного окна.

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

1 Ответов

Рейтинг:
5

OriginalGriff

Speak-это блокирующая операция - она не возвращается до тех пор, пока метод не завершится: Синтезатор речи.Speak Method (String) (System.Речь.Синтез)[^]
Вы можете заменить его асинхронным методом: Синтезатор речи.Метод SpeakAsync (String) (System.Речь.Синтез)[^] что может помочь, но я бы начал с перемещения кода в событие ContentRendered, а не помещал его в конструктор, а затем сделал бы его asnyc.