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
,