C# - событие KeyDown, FunctionKeys и TextBox

Вот код для формы с кнопкой (не показана) и текстовым полем. Нажатие любой клавиши, кроме функциональных клавиш, вызывает событие KeyDown, как и ожидалось, текстовое поле выбирается, курсор мигает, и символ последующего нажатия клавиши появляется в текстовом поле. Однако при нажатии функциональной клавиши, хотя текстовое поле выбрано, курсор не мигает, а символ самого следующего нажатия клавиши не появляется в текстовом поле. Символы последующих нажатий клавиш отображаются, как и ожидалось.

    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        textBox1.Select();
    }
}

Мне удалось обойти эту проблему, переопределив метод ProcessCmdKey, но мне любопытно узнать, как это сделать с помощью KeyDown.

Спасибо!!

1 ответ

В наши дни предпочтительным методом чтения нажатий клавиш F[1-12] является переопределение ProcessCmdKey метод, как вы сказали. Тем не менее, один (в настоящее время устарел) способ разрешить KeyDown обрабатывать клавиши F означает установить форму KeyPreview свойство к истине. Однако, как вы можете видеть в этом посте, у этого подхода есть свои недостатки, поэтому его безопаснее использовать. ProcessCmdKey,

Другие вопросы по тегам