0

我想在我的 form1 加载发生时打开 Windows 讲述人,并在表单关闭时停止讲述。

http://msdn.microsoft.com/en-us/library/system.speech.synthesis.aspx

我浏览了上面的链接,但没有帮助。确保我的要求不是字符串到语音。

请帮忙。

4

1 回答 1

1

在您的表单中,您想要挂钩Load事件和FormClosing事件。在构造函数中,初始化您的合成器。在 Load 事件中异步启动语音,然后在 FormClosing 事件中取消语音并处理您的合成器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Speech.Synthesis;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class SpeachForm : Form
    {
        SpeechSynthesizer _synth;

        public SpeachForm()
        {
            InitializeComponent();

            _synth = new SpeechSynthesizer();
        }

        private void SpeachForm_Load(object sender, EventArgs e)
        {
            // Configure the audio output. 
            _synth.SetOutputToDefaultAudioDevice();

            // Speak a string.
            var msg = "The text you want to say.";
            _synth.SpeakAsync(msg);
        }

        private void SpeachForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            _synth.SpeakAsyncCancelAll();
            _synth.Dispose();
        }
    }
}

此表单通过以下方式从另一个表单调用:

var frm = new SpeachForm();
frm.ShowDialog();
于 2013-06-22T13:27:53.763 回答