Как перехватить ввод символа "@" с клавиатуры - PullRequest
3 голосов
/ 07 августа 2011

Я пытался использовать событие keyDown в элементе управления текстового поля wpf и захватывать нажатые клавиши с помощью e.Key, однако, поскольку у символа "@" нет ключа, я не могу его поймать. Как определить, нажата ли клавиша "@"

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if(e.Key == Key.) // nothing corresponding the at key 
}

Ответы [ 2 ]

3 голосов
/ 07 августа 2011

KeyDown - для фактических ключей, они не касаются их интерпретации.Вместо этого используйте, например, PreviewTextInput.

private void RichTextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    if (e.Text == "@")
    {
        //...
    }
}
0 голосов
/ 07 августа 2011

В событии Keydown используются кнопки клавиатуры. Он ничего не знает о персонажах.

Попробуйте вместо этого использовать событие KeyPress. Вместо этого это событие возвращает код символа ASCII только что нажатой клавиши.

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '@') MessageBox.Show("The At sign was pressed");
}

Примечание. Символы, не являющиеся ASCII, не будут вызывать это событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...