.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Can't capture key events in windows form

4 REPLIES 4
SOLVED
Reply
Message 1 of 5
BMcAnney
939 Views, 4 Replies

Can't capture key events in windows form

I have created a basic add-on that shows a modal windows form. The only issue I am running into is that I am completely unable to capture any key events in the form. I just want to make the escape key close my form, but I'm having no luck. Here is my basic setup:

 

 

        <CommandMethod("myCommand")> _
        Public Sub myCommand()
            Dim myForm As Form1 = New Form1
            Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(myForm)
        End Sub

 

Then in the form code, I have this, for testing purposes:

 

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
        MsgBox("keypress")
    End Sub

 

I've also tried KeyUp and KeyDown. Key presses are working inside the form (I can use the keyboard to select an item in a combobox, for example), but I never hit the event handlers. Does anyone have a clue what I'm doing wrong here?

 

Thanks!

4 REPLIES 4
Message 2 of 5
hgasty1001
in reply to: BMcAnney

Hi:

 

You need to set the KeyPreview form's property to true, and then capture the keydown event with something like:

 

Private Sub MyForm_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

 

If e.KeyCode = Windows.Forms.Keys.Escape Then
 Me.Close()
End If


End Sub

 

Gaston Nunez

Message 3 of 5
Hallex
in reply to: BMcAnney

Here is code snip to capture KeyPress on numeric only textbox

which is allow you to jump to the next textbox on form after click Enter:

	string DSep = ',';

	private void txtBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
	{
		if (char.IsNumber(e.KeyChar) == false & Microsoft.VisualBasic.AscW(e.KeyChar) != 46) {
			if (e.KeyChar == Convert.ToChar(DSep)) {
				e.Handled = true;
			} else if (Microsoft.VisualBasic.AscW(e.KeyChar) == 13) {
				this.txtBox2.Select();
				e.Handled = false;
			} else {
				e.Handled = true;
			}
		}

	}

 Hope that helps

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Message 4 of 5
BMcAnney
in reply to: hgasty1001

Thank you, Gaston! The KeyPreview setting for the form is all I needed to change. It was off by default.

 

Brent

Message 5 of 5
chiefbraincloud
in reply to: BMcAnney

If all you want to do is close the form on the Escape key, you don't have to catch any key events.  All you have to do is put a button on your form (it doesn't even need to be visible), and assign that button to the forms CancelButton property.

Dave O.                                                                  Sig-Logos32.png

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost