我正在创建一个Windows应用程序(WinForms),并且希望我的应用程序在用户按下F5时调用一个方法 - 无论用户在做什么都应该工作但是他们必须使用该程序 - 我不是想要使用全局钩子 - 任何想法?
答案 0 :(得分:14)
覆盖主表单上的表单ProcessCmdKey并查找F5。
protected override bool ProcessCmdKey (ref Message msg, Keys keyData)
{
bool bHandled = false;
// switch case is the easy way, a hash or map would be better,
// but more work to get set up.
switch (keyData)
{
case Keys.F5:
// do whatever
bHandled = true;
break;
}
return bHandled;
}
答案 1 :(得分:4)
查看Form.KeyPreview
属性,它允许您在表单级别捕获所有KeyDown
,KeyUp
和KeyPress
事件,然后再允许个别处理元件。
答案 2 :(得分:3)
如果您只有一个可以拥有焦点的表单,则可以将该表单的KeyPreview
属性设置为true
并处理KeyPress
事件。
KeyPreview
属性将使表单接收所有按键,无论表单上的哪个控件具有输入焦点。