C# Ctrl+F 有时不起作用

标签 c# winforms keyup keystroke

我有一个 winforms 应用程序,其中一个表单内有一个 textbox。每当我按下“Ctrl+F”时,我都需要将焦点设置到 textbox 上。我在 keyup 事件中有以下代码。

        private void frm_KeyUp(object sender, KeyEventArgs e)
        {     
            // Handle 'Ctrl + F' to Find    
            if (e.KeyData == (Keys.Control | Keys.F))
                SetFocus();
        } 

我在这里遇到的问题是,有时,即使焦点在表单上并且我尝试“Ctrl+F”,条件也不会运行。我知道,只要我按下“Ctrl”,事件就会在我按下“F”键之前被触发。最终它起作用了,当我同时按下两个键时。因此,对于用户来说,有时屏幕可能对按键没有响应。

我该如何克服这种情况?

最佳答案

您正在使用 KeyUp 事件并检查该事件是否包含两个键。这只会在您同时释放两个键时发生。

改为将其更改为 KeyDown 事件,并且 check whether Ctrl was pressed在按下 F 的那一刻:

if (e.Control && e.KeyCode == Keys.F)
{
    // ...
}

关于C# Ctrl+F 有时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47793386/

相关文章:

c# - 如何使用来自不同项目的类

jquery keyup 函数检查是否为数字

c# - 从另一个应用程序添加/启动/停止 IoT Core 应用程序

c# - 有没有一种方法可以在 C# 中查明 double 是否为实数?

c# - 启动多个 gui (WinForms) 线程以便它们可以与 C# 中的一个主 gui 分开工作?

c# - 使用 Miterjoin 围绕引导线创建线

angular - 在 Angular 2\4 表中向下键

vue.js - 使用 keyup vuejs 和 laravel 即时搜索

c# - 忽略 Entity Framework 4.1 Code First 中的类属性

c# - Lambda 闭包还是类级变量?