C# KeyPress 事件能否提供全局事件

想做一个程序当在程序任何窗体按下F4键,就会触发一个事件KeyPress事件我写在textBox控件里还有效,写在窗体里好像没用另外,我用:if(e.KeyChar=='... 想做一个程序

当在程序任何窗体按下F4键,就会触发一个事件
KeyPress 事件我写在textBox控件里还有效,写在窗体里好像没用
另外,我用:if (e.KeyChar == '\r') 可以判断输入的是否是回车
if (e.KeyChar == 115)是不是F4键啊?查的ASCII表说F4是115,不知道对不对。
展开
 我来答
freeeeeewind
2015-01-08 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1350万
展开全部

1)设置窗体属性,如下图

2)对窗体的 KeyDown事件编程

 private void Form1_KeyDown(object sender, KeyEventArgs e)
{

       //判断是否按下了F4键

       if (e.KeyCode == Keys.F4) 
       {
               MessageBox.Show("你要做什么?");
       }
}

阳光的雷咩咩
2015-01-08 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7819万
展开全部
  1. 设置窗体的KeyPreview=true

  2. KeyPress事件只能检测到可见字符的输入,不能检测控制字符,建议使用KeyDown

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lc316546079
2015-01-08 · TA获得超过273个赞
知道小有建树答主
回答量:682
采纳率:0%
帮助的人:330万
展开全部
要全局只能去hook
追问
hook是什么?
追答
~~~你百度c# hook 键盘就可以了; 这里你不需要全局hook 只要hook进程内就可以了;
这是我相关函数在c#中的声明:
// hook回调
public delegate int HookProc(int nCode, int wParam, IntPtr lParam);
// 安装hook
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall, SetLastError = true)]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, int dwThreadId);
// 将消息传到下个hook
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);
// 卸载hook
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall, SetLastError = true)]
public static extern int UnhookWindowsHookEx(int idHook);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式