给你个完整版的吧: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms;namespace AppMain { public partial class MyUserControl : UserControl { protected override bool ProcessDialogKey(Keys keyData) { if (keyData == Keys.Enter) { MessageBox.Show("KeyDown"); return true; } return false; } public MyUserControl() { InitializeComponent(); } } }
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return base.ProcessCmdKey(ref msg, keyData);
}
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Enter)
{
MessageBox.Show("KeyDown");
return true;
}
return false;
}
ProcessDialogKey(Keys keyData)
方法在哪里调用它
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace AppMain
{
public partial class MyUserControl : UserControl
{
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Enter)
{
MessageBox.Show("KeyDown");
return true;
}
return false;
} public MyUserControl()
{
InitializeComponent();
}
}
}
protected override void OnKeyUp(KeyEventArgs e)
{
base.OnKeyUp(e); //写你的逻辑
}
直接调用就可以使用。而且该方法不会被焦点所影响。
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Enter)
{
MessageBox.Show("KeyDown");
return true;
}
return false;
}
{ //判断是否就是键盘
if (pMsg->message == WM_KEYDOWN || pMsg->message == WM_KEYUP)
{
//这里是回车
/* if(pMsg->wParam==VK_RETURN ) //虚拟键盘代码可以通过msdn或者sdk查找
{
MessageBox(_T("000000000000000"));
}*/
switch(pMsg->wParam)
{
case VK_F1:
m_KeyVol = " F1" ;
break;
测试可行!