Mahesh Wagh
Mahesh Wagh

Reputation: 161

Skipping KeyDown On Override ProcessCmdKey EventHandller

I have a simple increment on textbox by pressing down arrow key which are as below.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{

     if (keyData == Keys.Down)
     {

           int c = int.Parse(textBox1.Text);
           c++;
           textBox1.Text = c.ToString();


     }
 }

The above works on pressing double down arrow key instead of single pressing down arrow key.

Note: The above code is on UserControl. And I have tried it on simple winform application on form keydown EventHandller and the same is works fine.

How to overcome?.

Upvotes: 0

Views: 2360

Answers (1)

SwDevMan81
SwDevMan81

Reputation: 49978

You'll need to handle other commands that existed before and return when you handle ones you are looking for. Try changing it to this and see if that helps:

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

Upvotes: 3

Related Questions