?
Solved

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

Posted on 2008-10-29
4
Medium Priority
?
5,434 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 750 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

NFR key for Veeam Agent for Linux

Veeam is happy to provide a free NFR license for one year.  It allows for the non‑production use and valid for five workstations and two servers. Veeam Agent for Linux is a simple backup tool for your Linux installations, both on‑premises and in the public cloud.

Question has a verified solution.

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

IP addresses can be stored in a database in any of several ways.  These ways may vary based on the volume of the data.  I was dealing with quite a large amount of data for user authentication purpose, and needed a way to minimize the storage.   …
Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.
Suggested Courses

770 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