【问题标题】:C# - KeyDown Event, FunctionKeys and TextBoxC# - KeyDown 事件、功能键和文本框
【发布时间】:2014-04-09 22:07:00
【问题描述】:

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

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

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

我已经能够通过重写 ProcessCmdKey 方法来规避这个问题,但我很想知道如何使用 KeyDown 来解决这个问题。

谢谢!!

【问题讨论】:

    标签: c# select textbox keydown


    【解决方案1】:

    现在,阅读 F[1-12] 按键的首选方法是覆盖 ProcessCmdKey 方法,如您所说。但是,允许KeyDown 处理 F 键的一种(现已弃用)方法是将表单的 KeyPreview 属性设置为 true。但是,正如您在 this 的帖子中看到的那样,这种方法有一些缺点,因此使用 ProcessCmdKey 会更安全。

    【讨论】:

    • 抱歉没有提及,我已将 KeyPreview 属性设置为 true,但问题仍然存在。事实上,如果没有此设置,KeyDown 事件将不会触发。
    • @user3517113 你想用textBox.Select() 完成什么?如果要使文本框成为焦点,则需要改用textBox1.Focus()。这可能就是原因。
    • 我确实尝试了 Focus() 方法,但没有解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多