重写WndProc后,如何避免当当当的声音
因为一些需求关系,我需要在WM_CHAR的消息中修改当前输入的字符(可能转成多个字符),所以要手动设置控件的Text而不是让Windows消息自动设置。 在最后我把WParam设置成IntPrt.Zero是让该消息输入控制。现在问题是手动设置Text已实现,但每次敲打键盘都会有当当当的声音。如果解决这个问题?
--------------------编程问答-------------------- 问题在于你的WndProc是怎么写的? 让我看看 --------------------编程问答--------------------
case WM_CHAR:
// set text manually
...
sender.Text = "test";
// need set to Zero here since we set the text manually before
m.WParam = IntPtr.Zero;
我顶楼贴着了,逻辑就是这样:手动设置控件的text,最后把m.WParam设成IntPtr.Zero。开始的一些业务逻辑和控件和消息都没关系,只是得到需要手动设置的text。谢谢! --------------------编程问答-------------------- 将Form的KeyPreview属性设为true,然后再override ProcessCmdKey方法,仅供参考
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.HWnd == textBox1.Handle)
{
int vk = msg.WParam.ToInt32();
msg.WParam = new IntPtr(vk + 1);
}
return base.ProcessCmdKey(ref msg, keyData);
}
补充:.NET技术 , C#