下面代码空格好使,按空格不会响应了,但是回车不行。 protected override void WndProc(ref Message m)
{
Trace.Write(m.ToString() + "\n");
if (m.WParam == (IntPtr)0xd || m.WParam == (IntPtr)0x20)
{
return;
}
base.WndProc(ref m);
}下面是按回车时的Message
msg=0x87 (WM_GETDLGCODE) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0
msg=0xf (WM_PAINT) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0
msg=0x8 (WM_KILLFOCUS) hwnd=0x191058 wparam=0x2c112e lparam=0x0 result=0x0
msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x191058 wparam=0x0 lparam=0xffffffffc000000f result=0x0
msg=0x282 (WM_IME_NOTIFY) hwnd=0x191058 wparam=0x1 lparam=0x0 result=0x0
msg=0xf (WM_PAINT) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0该拦截谁?谢谢
{
Trace.Write(m.ToString() + "\n");
if (m.WParam == (IntPtr)0xd || m.WParam == (IntPtr)0x20)
{
return;
}
base.WndProc(ref m);
}下面是按回车时的Message
msg=0x87 (WM_GETDLGCODE) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0
msg=0xf (WM_PAINT) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0
msg=0x8 (WM_KILLFOCUS) hwnd=0x191058 wparam=0x2c112e lparam=0x0 result=0x0
msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x191058 wparam=0x0 lparam=0xffffffffc000000f result=0x0
msg=0x282 (WM_IME_NOTIFY) hwnd=0x191058 wparam=0x1 lparam=0x0 result=0x0
msg=0xf (WM_PAINT) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0该拦截谁?谢谢
{
Trace.Write(m.ToString() + "\n");
if (m.WParam == (IntPtr)0xd || m.WParam == (IntPtr)0x20)
{
return;
}
base.WndProc(ref m);
}单步跟踪一下,为什么回车键值没起作用
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}用这个方法可以屏蔽回车
不过,过滤空格的方法用KeyDown不就好了吗? private void button1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
e.SuppressKeyPress = false;
}
}
{ if (e.KeyCode.ToString() == "Return")
{
return;
}
else if (e.KeyValue.ToString() == "")
{
return;
}
}