emi_sastra
asked on
CHECK FORM KEY DOWN
Hi All,
I have form and textbox keydown event.
The form event is fired first then textbox.
I want to check at form event if the keydown is Key F, Crtl, Alt, Shift.
I want to exit from the sub as soon as possible, otherwise it will continue to check those keys at other sub.
How could I do it ?
Thank you.
I have form and textbox keydown event.
The form event is fired first then textbox.
I want to check at form event if the keydown is Key F, Crtl, Alt, Shift.
I want to exit from the sub as soon as possible, otherwise it will continue to check those keys at other sub.
How could I do it ?
Thank you.
ASKER
Hi Deepak Lakkad,
I try :
Private Sub frmMain_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
'Kalau bukan F, Ctrl dan Alt maka keluar
If Not e.Shift Or _
Not e.KeyCode = 70 Or _
Not e.Alt Or _
Not e.Control Or _
Not e.KeyCode = Keys.Escape Then Exit Sub
If e.KeyCode = Keys.Escape Then
Dim intAnswer As Integer = MsgBox("Yakin Mau Keluar Dari Menu ...!", MsgBoxStyle.YesNo, Me.Text)
If intAnswer = vbYes Then
Me.Close()
Exit Sub
End If
End If
Me.Check_Keys(sender, e)
End Sub
Anything wrong ?
Thank you.
I try :
Private Sub frmMain_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
'Kalau bukan F, Ctrl dan Alt maka keluar
If Not e.Shift Or _
Not e.KeyCode = 70 Or _
Not e.Alt Or _
Not e.Control Or _
Not e.KeyCode = Keys.Escape Then Exit Sub
If e.KeyCode = Keys.Escape Then
Dim intAnswer As Integer = MsgBox("Yakin Mau Keluar Dari Menu ...!", MsgBoxStyle.YesNo, Me.Text)
If intAnswer = vbYes Then
Me.Close()
Exit Sub
End If
End If
Me.Check_Keys(sender, e)
End Sub
Anything wrong ?
Thank you.
Hi,
In your code,
will terminate the execute of sub if escape is pressed.
While following code will execute only if Escape is pressed.
So, In this case, the second block will never execute ...
I think this is the problem in your code ...
- Deepak Lakkad
In your code,
If Not e.Shift Or _
Not e.KeyCode = 70 Or _
Not e.Alt Or _
Not e.Control Or _
Not e.KeyCode = Keys.Escape Then Exit Sub
will terminate the execute of sub if escape is pressed.
While following code will execute only if Escape is pressed.
If e.KeyCode = Keys.Escape Then
Dim intAnswer As Integer = MsgBox("Yakin Mau Keluar Dari Menu ...!", MsgBoxStyle.YesNo, Me.Text)
If intAnswer = vbYes Then
Me.Close()
Exit Sub
End If
End If
So, In this case, the second block will never execute ...
I think this is the problem in your code ...
- Deepak Lakkad
ASKER
Ok. I try :
Private Sub frmMain_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
'Kalau bukan F, Ctrl dan Alt maka keluar
If e.KeyCode = Keys.Escape Then
Dim intAnswer As Integer = MsgBox("Yakin Mau Keluar Dari Menu ...!", MsgBoxStyle.YesNo, Me.Text)
If intAnswer = vbYes Then
Me.Close()
Exit Sub
End If
Else
If Not e.Shift Or _
Not e.KeyCode = 70 Or _
Not e.Alt Or _
Not e.Control Then Exit Sub
End If
Me.Check_Keys(sender, e)
End Sub
When I press F keys, it goes to exit sub ?
What's wrong ?
Thank you.
Private Sub frmMain_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
'Kalau bukan F, Ctrl dan Alt maka keluar
If e.KeyCode = Keys.Escape Then
Dim intAnswer As Integer = MsgBox("Yakin Mau Keluar Dari Menu ...!", MsgBoxStyle.YesNo, Me.Text)
If intAnswer = vbYes Then
Me.Close()
Exit Sub
End If
Else
If Not e.Shift Or _
Not e.KeyCode = 70 Or _
Not e.Alt Or _
Not e.Control Then Exit Sub
End If
Me.Check_Keys(sender, e)
End Sub
When I press F keys, it goes to exit sub ?
What's wrong ?
Thank you.
Hi
You are making mistake in write following condition
If Not e.Shift Or _
Not e.KeyCode = 70 Or _
Not e.Alt Or _
Not e.Control Then Exit Sub
End If
I don't understand what do you want to do. Can you please explain your requirement so I can write few lines of code for it.
- Deepak Lakkad
You are making mistake in write following condition
If Not e.Shift Or _
Not e.KeyCode = 70 Or _
Not e.Alt Or _
Not e.Control Then Exit Sub
End If
I don't understand what do you want to do. Can you please explain your requirement so I can write few lines of code for it.
- Deepak Lakkad
ASKER
-I don't understand what do you want to do. Can you please explain your requirement so I can write few lines of code for it.
At form keydown event if not special keys (Shift, Ctrl, Alt, F(x) and Esc) I want to exit from that sub.
Thank you.
At form keydown event if not special keys (Shift, Ctrl, Alt, F(x) and Esc) I want to exit from that sub.
Thank you.
Hi
For your requirement, If should be written as following
If e.KeyCode = Keys.F1 Or e.KeyCode = Keys.F2 Or e.KeyCode = Keys.F3 Or e.KeyCode = Keys.F4 Or e.KeyCode = Keys.F5 Or _
e.KeyCode = Keys.F6 Or e.KeyCode = Keys.F7 Or e.KeyCode = Keys.F8 Or e.KeyCode = Keys.F9 Or e.KeyCode = Keys.F10 Or _
e.Control Or e.Shift Or e.Alt Or e.KeyCode = Keys.Escape Then
Exit Sub
End If
Please check it
- Deepak Lakkad
For your requirement, If should be written as following
If e.KeyCode = Keys.F1 Or e.KeyCode = Keys.F2 Or e.KeyCode = Keys.F3 Or e.KeyCode = Keys.F4 Or e.KeyCode = Keys.F5 Or _
e.KeyCode = Keys.F6 Or e.KeyCode = Keys.F7 Or e.KeyCode = Keys.F8 Or e.KeyCode = Keys.F9 Or e.KeyCode = Keys.F10 Or _
e.Control Or e.Shift Or e.Alt Or e.KeyCode = Keys.Escape Then
Exit Sub
End If
Please check it
- Deepak Lakkad
ASKER
Ok. But I have to write down those F Keys ?
Below is your code :
Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEv entArgs) Handles MyBase.KeyDown
If e.KeyCode = 70 And e.Shift = True Then
nextSub = False
Else
nextSub = True
End If
End Sub
What is e.KeyCode = 70 means ?
Thank you.
Below is your code :
Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEv
If e.KeyCode = 70 And e.Shift = True Then
nextSub = False
Else
nextSub = True
End If
End Sub
What is e.KeyCode = 70 means ?
Thank you.
Hi
replace
If e.KeyCode = 70 And e.Shift = True Then
with
newly given code
- or -
you can replace
If e.KeyCode = 70 And e.Shift = True Then
nextSub = False
Else
nextSub = True
End If
End if
with new code
- Deepak Lakkad
replace
If e.KeyCode = 70 And e.Shift = True Then
with
newly given code
- or -
you can replace
If e.KeyCode = 70 And e.Shift = True Then
nextSub = False
Else
nextSub = True
End If
End if
with new code
- Deepak Lakkad
ASKER
If e.KeyCode = Keys.F1 Or e.KeyCode = Keys.F2 Or e.KeyCode = Keys.F3 Or e.KeyCode = Keys.F4 Or e.KeyCode = Keys.F5 Or _
e.KeyCode = Keys.F6 Or e.KeyCode = Keys.F7 Or e.KeyCode = Keys.F8 Or e.KeyCode = Keys.F9 Or e.KeyCode = Keys.F10 Or _
e.Control Or e.Shift Or e.Alt Or e.KeyCode = Keys.Escape Then
Exit Sub
End If
Should it be :
IF NOT (KeyCode .. ) THEN EXIT SUB
Since this is at form event.
Is it correct ?
Thank you.
e.KeyCode = Keys.F6 Or e.KeyCode = Keys.F7 Or e.KeyCode = Keys.F8 Or e.KeyCode = Keys.F9 Or e.KeyCode = Keys.F10 Or _
e.Control Or e.Shift Or e.Alt Or e.KeyCode = Keys.Escape Then
Exit Sub
End If
Should it be :
IF NOT (KeyCode .. ) THEN EXIT SUB
Since this is at form event.
Is it correct ?
Thank you.
yes you are right ...
ASKER
Is there any way to check just F key, does not have to write all that FKeys.
Thank you.
Thank you.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Deepak,
Thank you very much for your help.
Thank you very much for your help.
refer following code
Open in new window
I have declared a variable nextSub at form level.
In form's KeyDown event, I check whether it is "F" with Shift key then I set value of nextSub to false.
And In KeyDown Event of Textbox, I check If nextSub is false, then exit from That Sub... Thus it will not execute the KeyDown of Textbox.
I think this will help you ...
- Deepak Lakkad