在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上,同样的效果很好。

如何克服?

在Override ProcessCmdKey eventandller上跳过KeyDown

您需要处理之前存在的其他命令,并在处理您正在查找的命令时返回。试着把它改成这样,看看是否有帮助:

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);
}