2011-12-06 2 views
3

私は簡単なテキストを音声プログラムに書きたいと思います。C#(keyListener)で入力を記録する方法

まず、プログラムに書き込まれたシンボルのみを再生させたいとします。たとえば、「a」と入力すると、プログラムは「a」(すべてを記録したもの)と言いたいので、単語を入力するとスペルが表示されます。

しかし、私はC#と.Netの初心者であり、プログラムが私が入力したテキストをどのように理解するかは分かりません。例えば、JavaではkeyListenerクラスがあると聞いていましたが、どのクラスを使うべきか分かりません。私はMSDNを見ましたが、それを見つけることができませんでした。

入力キーを聴くにはどのクラスまたは関数を使用する必要がありますか?

+1

の多くは、あなたがリサイズやWPFを使用することになりますでしょうか?おそらくコンソールアプリケーションですか?または、Webアプリですか? Silverlight?答えは技術の選択に依存するためです。 –

+0

私はWinFormsを使用します – vato

+0

どのようにサウンドを再生しますか?あなたが音を押すすべてのキーが表示されるか、または入力が終わったら、その単語が発音されます(個々の文字にbased) – Moonlight

答えて

5

これを実現するためにWindowsフォームを使用する予定です。 解決策は非常に簡単です。これらのイベントには、MouseDown、MouseUp、MouseMove、MouseEnter、MouseLeave、MouseHover、KeyPress、KeyDown、およびKeyUpが含まれます。各コントロールには、これらのイベントが公開されています。あなたはそれを購読する必要があります。

完全な単語が入力されているかどうかを見つけるためのロジックの少しがあるでしょう。この http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx

を参照してください。シンプルなソウルティションは、スペースが押されると、単語が完成したとみなすことができます。ユーザーが間違ったスペルを入力してバックスペースを叩いてスペルを修正したい場合、非常に粗末なロジックです。あなたはそれに遅れを追加したいかもしれません。

+0

私はこれがまさに私が探していたものだと思います。 :) – vato

0

TextBoxを含むWindowsフォームを作成します。 KeyPressイベントを処理します。これにより、ユーザーが入力した実際の文字が表示されます。 KeyDownとKeyUpはあなたを助けません。

KeyCharプロパティを確認する必要があります。

void MyEventHandler(object sender, KeyPressEventArgs e) { 
    // Do stuff depending on the value of e.KeyChar 
} 
0
private void button1_Click_1(object sender, EventArgs e) 
    { 
     string word = textBox1.Text; 
     foreach (char i in word) 
     { 
      switch (i) 
      { 
       case 'a': 
       case 'A': { // play sound a 

        break; 
       } 
       default: 
        { 
         // play no sound 
         break; 
        } 
      } 
     } 
    } 
4

あなたがここにすべての他のC#の開発者のようにVisual Studioを使用している場合は、より詳細なコード例である:このような

  1. のWindowsフォームを作成し、[デザイン]にアクセスしてください。
  2. あなた
  3. は、その値に応じてKeyEventArgsをハンドルするためにVSがイベントを作成し、結合するそのプロパティ(RMB =>プロパティ)を選択し、イベントへの変更、および二重のKeyDown
  4. にLMBをクリックし

例:

private void NewDialog_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyData) 
     { 
      case Keys.A: 
       { 
        MethodToOutputSound(AEnum); 
        break; 
       } 
      case Keys.B: 
       { 
        MethodToOutputSound(BEnum); 
        break; 
       } 
      case Keys.F11: 
       { 
        DifferentMethod(); 
        break; 
       } 
      case Keys.Escape: 
       { 
        this.Close(); 
        break; 
       } 
      default: 
       { 
        break; 
       } 
     } 
} 

かのIF

private void NewDialog_KeyDown(object sender, KeyEventArgs e) 
{ 
     if(e.KeyData == Keys.A) 
     { 
      MethodToOutputSound(AEnum); 
     } 

     if(e.KeyData == Keys.B) 
     { 
      MethodToOutputSound(BEnum); 
     } 
     ... 
} 
関連する問題