Solved

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

Posted on 2008-10-29
4
5,428 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

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Flash (http://en.wikipedia.org/wiki/Adobe_Flash) has evolved over the years to where it has become a masterful tool for displaying content screen.  It has excellent layout placement, UI precision as well as rendering capabilities. This, along with t…
In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…

733 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