我有一个 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/