在Override ProcessCmdKey EventHandller上跳过KeyDown

时间:2013-01-18 17:31:23

标签: c# winforms visual-studio

按下箭头键,我在文本框上有一个简单的增量,如下所示。

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上。我已经在表单keydown EventHandller上的简单winform应用程序上尝试过它,并且工作正常。

如何克服?。

1 个答案:

答案 0 :(得分:3)

您需要处理之前存在的其他命令,并在处理您正在寻找的命令时返回。尝试将其更改为此,看看是否有帮助:

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