Переадресация нажатия клавиши на другой элемент управления в WinForms - PullRequest
0 голосов
/ 17 апреля 2009

Я получаю нажатие клавиши на Form объекте OnKeyDown. Когда выполняются некоторые условия (например, нажатие клавиши является печатным символом, а не горячей клавишей), я хочу перенаправить ключ на текстовый элемент управления в форме и установить фокус на текстовом элементе управления, чтобы пользователь мог продолжить ввод текста. Я могу декодировать символ, набранный с помощью MapVirtualKey, но я получаю только символ «без сдвига» (всегда в верхнем регистре). Использование ToUnicodeEx кажется слишком большим количеством PITA.

Каков наилучший способ сделать это? Разве нет способа просто переслать само сообщение Windows?

Разве я не могу перехватить ProcessKeyPreview или что-то подобное и переслать его на ProcessKeyPreview текстового элемента управления? Есть идеи по аналогии?

Bump: Нет ответов!

1 Ответ

1 голос
/ 29 июня 2009

Я сделал это в одной форме со следующим

private void MyFunkyForm_KeyDown(object sender, KeyEventArgs e)
{
    // to avoid duplicate letters in textbox :-)
    if (textBox2.Focused == false)
    {

        // get the char from the Keycode
        char inputChar = (char)e.KeyCode;
        if (char.IsLetterOrDigit(inputChar))
        {
            // if letter or number then add it to the textbox
            textBox2.Text += inputChar;
        }

        // set focus
        textBox2.Focus();
        // set cursor to the end of text, no selection
        textBox2.SelectionStart = textBox2.Text.Length;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...