我很难将此代码与复选框结合使用。
我希望代码在启用复选框时运行(true),并在复选框被禁用时停止(false)但由于某种原因我不能和我想要一些帮助。
如果有人提出解决方案或提出异议,我将不胜感激。
代码为: private void Form1_Load(object sender,EventArgs e)
Choices cities = new Choices(new string[] { "google" });
Grammar gr = new Grammar(new GrammarBuilder(cities));
SpeechRecognitionEngine recognize = new SpeechRecognitionEngine();
SpeechSynthesizer Synth = new SpeechSynthesizer();
recognize.SetInputToDefaultAudioDevice();
DictationGrammar Voc = new DictationGrammar();
recognize.LoadGrammar(Voc);
recognize.RecognizeAsync(RecognizeMode.Multiple);
recognize.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognize_SpeechRecognized);
}
**private void recognize_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)**
{
if (e.Result.Text == "google")
System.Diagnostics.Process.Start("http://www.google.com");
}
**(and possibly sth that touches the solution?)**
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
recognize.RecognizeAsync(RecognizeMode.Multiple);
else if (checkBox1.Checked == false) // turn off
recognize.RecognizeAsyncCancel();
}
感谢
答案 0 :(得分:0)
您需要将checkBox1_CheckedChanged
与前端的复选框相关联(checkBox1
我假设)。 <asp:CheckBox id="checkBox1" OnCheckedChanged="checkBox1_CheckedChanged" />
答案 1 :(得分:0)
不幸的是它没有用,所以我用按钮制作这个应用程序。
private void button1_Click(object sender,EventArgs e) { recognize.RecognizeAsync(RecognizeMode.Multiple); button1.Enabled = false; }
感谢你的时间
答案 2 :(得分:0)
我猜您希望复选框代表语音识别当前是否处于活动状态,并使用其进行切换。您的代码的问题在于,复选框的初始状态与语音识别的状态不对应,语音识别的状态立即开始。
您可以通过将复选框的初始选中状态设置为true
或在初始块中删除以下行来解决此问题:
recognize.RecognizeAsync(RecognizeMode.Multiple);
因为该代码将始终在复选框事件处理程序上运行。您还需要将recognize
变量的定义拉到Form1_Load
之外的类级别。