我有一个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'之前,事件就被解雇了。当我同时按下两个键时,它最终会起作用。因此,对于用户而言,有时屏幕可能看起来没有响应。
我怎样才能克服这种情况?
答案 0 :(得分:3)
您正在使用KeyUp事件并检查事件是否包含两个键。这只会在您同时释放两个键时发生。
改为将其更改为KeyDown事件,并且在按下 F 时check whether Ctrl was pressed:
thread_1 = threading.Thread(name="wait_for_esc", target=wait_for_esc)
thread_2 = threading.Thread(name="do_something", target=do_something)