在Override ProcessCmdKey eventandller上跳过KeyDown
本文关键字:KeyDown eventandller Override ProcessCmdKey | 更新日期: 2023-09-27 17:54:29
我有一个简单的增量文本框按下箭头键,如下所示。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Down)
{
int c = int.Parse(textBox1.Text);
c++;
textBox1.Text = c.ToString();
}
}
上面的工作原理是按双下箭头键而不是按单下箭头键。
注意:以上代码在UserControl上。我已经在简单的winform应用程序上尝试过了,在form keydown EventHandller上,同样的效果很好。
如何克服?您需要处理之前存在的其他命令,并在处理您正在查找的命令时返回。试着把它改成这样,看看是否有帮助:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.WParam.ToInt32() == (int)Keys.Down)
{
int c = int.Parse(textBox1.Text);
c++;
textBox1.Text = c.ToString();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}