下面是一个捕获键盘按键的一个例子,主题是dataGrid
对于您的功能,您可以将ProcessCmdKey方法按以下方式重载:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104; if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch(keyData)
{
case Keys.Return:
DataGridCell myCell = this.CurrentCell;
MessageBox.Show(this[myCell].ToString());
break;
}
} return base.ProcessCmdKey(ref msg,keyData);
}

解决方案 »

  1.   

    我个人认为 依靠.net现有的类不可能实现
    唯一的出路是通过System.Runtime.InteropServices.DllImportAttribute
    调用win32的api  鼠标的消息好捕捉系统提供了api我星期一可以查查以前的
    程序给你,但是键盘的消息我没试过 但我觉得应该先得到当前运行窗体的handle然后通过System.Windows.Forms.NativeWindow来捕捉 你试试巴
      

  2.   

    我试图用COM封装hook函数,但是原本运行正常的dll,一到COM里面事件函数就不被调用,不知是怎么回事
      

  3.   

    谢谢大家,最后用COM封装成功