Как записать набор текста в C # (keyListener) - PullRequest
3 голосов
/ 06 декабря 2011

Я хочу написать простую текстовую речевую программу.

Во-первых, я хочу, чтобы программа воспроизводила только записанный символ. Например, если я набираю «а», я хочу, чтобы программа произнесла «а» (я записал их все), поэтому, когда я набираю слово, оно должно произноситься по буквам.

Однако я новичок в C # и .Net и не знаю, как заставить программу понимать текст, который я набираю. Например, в Java я слышал, что есть класс keyListener, но я не знаю, какой класс мне использовать. Я посмотрел на MSDN, но не смог его найти.

Какой класс или функцию я должен использовать для прослушивания набранных клавиш?

Ответы [ 4 ]

5 голосов
/ 06 декабря 2011

Полагаю, вы планируете использовать Windows Forms для достижения этой цели. Решение было бы довольно простым. Эти события включают MouseDown, MouseUp, MouseMove, MouseEnter, MouseLeave, MouseHover, KeyPress, KeyDown и KeyUp. Каждый элемент управления показывает эти события. Вам просто нужно подписаться на него.

Пожалуйста, обратитесь к этому http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx

Было бы немного логики выяснить, было ли введено полное слово или нет. Простое мнение было бы, когда пространство было нажато, вы можете предположить, что слово было завершено. Это очень грубая логика, поскольку пользователь, возможно, ввел неправильное написание и хочет нажать клавишу Backspace и исправить написание. Возможно, вы захотите добавить к нему лаг.

4 голосов
/ 06 декабря 2011

Если вы используете Visual Studio, как и любой другой разработчик C #, вот более подробный пример кода:

  1. Создайте форму Windows и перейдите в [Design].
  2. Выберитеего свойства (RMB => свойства), перейдите к Событиям и дважды щелкните ЛКМ на KeyDown
  3. VS создаст и свяжет событие для вас
  4. Обработка KeyEventArgs в зависимости от его значения.

Пример:

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 s

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

        if(e.KeyData == Keys.B)
        {
            MethodToOutputSound(BEnum);
        }
        ...
 }
0 голосов
/ 06 декабря 2011
  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;
                    }
            }
        }
    }
0 голосов
/ 06 декабря 2011

Создать форму Windows с TextBox в нем.Обработайте событие KeyPress - оно даст вам фактический символ, который вводит пользователь.KeyDown и KeyUp вам не помогут.

Вам необходимо проверить свойство KeyChar.Как это:

void MyEventHandler(object sender, KeyPressEventArgs e) {
    // Do stuff depending on the value of e.KeyChar
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...