Solved

Visual C# - How to Capture keypress for Enter, Up, Down, Left, Right

Posted on 2008-10-29
4
5,430 Views
Last Modified: 2013-12-17
ARG !

This is driving me nutz!

I am converting one of my VB6 apps to C# (I'm pretty new to c#). I currently have this working great in VB6, but I can't seem to find how to do it in c#, I've searched the net and my 8 c# books for hours and can't figure out how to get the job done.

Here is what I need:

Need list:
I need to be able to capture keyboard events for the Up, Down, Left, & Right arrows along with the enter key in my c# application.

Want list:
I would like to be able to turn the key capture on and off.

Reason:
What this app is, is a troubleshooter of sorts, where I need the ability to test for up, down, left, right, and enter, but that is only a part of the test. After the results are in from that, I don't want it to keep detecting those motions.

I would REALLY appreciate some help here guys.

Thanks!
0
Comment
Question by:MiSheps
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 

Author Comment

by:MiSheps
ID: 22837024
ok,... i was playing around with some bits of code I found, and I think I'm almost there, but now I need to know how to turn it off. specifically the enter key.

So, here is the code I'm using now, but how to I temporarily disable the enter key press?


            protected override bool ProcessKeyPreview(ref System.Windows.Forms.Message m)
            {
                switch (m.WParam.ToInt32())
                {
                    case 37: // <--- left arrow.
                        if (MyGlobalVariables.JoystickTestRunning == true)
                        {
                            MessageBox.Show("Left");
                        }
                        break;
                    case 38: // <--- up arrow.
                        if (MyGlobalVariables.JoystickTestRunning == true)
                        {
                            MessageBox.Show("Up");
                        }
                        break;
                    case 39: // <--- right arrow.
                        if (MyGlobalVariables.JoystickTestRunning == true)
                        {
                            MessageBox.Show("Right");
                        }
                        break;
                    case 40: // <--- down arrow.
                        if (MyGlobalVariables.JoystickTestRunning == true)
                        {
                            MessageBox.Show("Down");
                        }
                        break;
                    case 13: // <--- Enter Key
                        if (MyGlobalVariables.JoystickTestRunning == true)
                        {
                            MessageBox.Show("Enter");
                        }
                        break;
                }
                return false;
            }

Open in new window

0
 
LVL 2

Expert Comment

by:Clausewitz
ID: 22840188
case 13: // <--- Enter Key
                        if (MyGlobalVariables.JoystickTestRunning == true)
                        {
                            // MessageBox.Show("Enter");
                            return true;
                        }
                        break;

If you return true, the key event is marked as processed and so the other keyboard events should not be triggered.
0
 
LVL 2

Accepted Solution

by:
Clausewitz earned 250 total points
ID: 22840261
0
 

Author Comment

by:MiSheps
ID: 22843279
ClauseWitz:

I tried your suggestion, and it didn't work, do I have something wrong?

                        case 13: // <--- Enter Key
                            if (MyGlobalVariables.JoystickTestRunning == true)
                            {
                                if (this.lblJoyStickAction2.Text == "BUTTON!")
                                {
                                    this.lblJoystickBUTTON.ForeColor = System.Drawing.Color.Black;
                                    this.lblJoystickBUTTON.BackColor = System.Drawing.Color.LightGreen;
                                    this.lblJoystickBUTTON.Text = "Joystick BUTTON Passed!";
                                    MyGlobalVariables.EndResultJoystickBUTTON = "Joystick BUTTON Passed!";
                                    MyGlobalVariables.JoyStickBUTTONFailed = false;
 
                                    this.timer1.Enabled = false;
                                    this.btnRunIndividualTests3.Visible = true;
                                    this.btnRunIndividualTests3.BringToFront();
 
                                    this.lblJoyStickAction1.Text = "Move Joystick";
                                    this.lblJoyStickAction2.Text = "UP!";
                                    this.lblJoyStickAction1.Visible = false;
                                    this.lblJoyStickAction2.Visible = false;
                                    this.btnJoystickNotWork.Visible = false;
                                    this.lblJoystick.Visible = false;
                                    this.btnShutdown.Visible = true;
                                    this.lblCountdownTime.Text = MyGlobalVariables.JoyStickWaitTimer;
                                    this.DisplayJoystickResults();
                                    return true;
                                }
                            }
                            break;

Open in new window

0

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
NetCrunch network monitor is a highly extensive platform for network monitoring and alert generation. In this video you'll see a live demo of NetCrunch with most notable features explained in a walk-through manner. You'll also get to know the philos…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question