C# - KeyDown Event, FunctionKeys and TextBox

本文关键字:FunctionKeys and TextBox Event KeyDown | 更新日期: 2023-09-27 17:57:43

这是一个带有按钮(未显示)和文本框的表单的代码。按下除功能键以外的任何键都会导致KeyDown事件按预期触发,文本框被选中,光标闪烁,随后击键的字符出现在文本框中。然而,当按下功能键时,尽管选择了文本框,但光标不会闪烁,下一次按键的字符也不会出现在文本框中。后续击键的字符确实按预期显示。

    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        textBox1.Select();
    }
}

我已经能够通过重写ProcessCmdKey方法来避免这个问题,但我很想知道如何使用KeyDown来做到这一点。

谢谢!!

C# - KeyDown Event, FunctionKeys and TextBox

现在,读取F[1-12]按键的首选方法是覆盖ProcessCmdKey方法,正如您所说。但是,允许KeyDown处理F键的一种方法(现在已弃用)是将表单的KeyPreview属性设置为true。然而,正如您在这篇文章中看到的,这种方法也有缺点,所以使用ProcessCmdKey更安全。