first of all, I needed a way to know when the control key was down, and here's the link: Form keyDown not working?
Thanks to them I got it working. But I noticed that was not my ultimate objective! Instead of checking for the control key on keyDown, I want to check for it on keyPress. But apparently I can't use
If e.Control Then
End If
On the
Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
End Sub
Method.
Any ideas? I also want to check for when the key is no longer pressed...
New problem:
Private Sub controlTick(ByVal sender As Object, ByVal e As EventArgs)
If Control.ModifierKeys = Keys.Control Then
controlActivated = True
PictureBox2.Invalidate()
End If
If Control.ModifierKeys <> Keys.Control Then
controlActivated = False
PictureBox2.Invalidate()
End If
Label1.Text = controlActivated
End Sub
That is inside a timer. For some reason it is always "False" unless I click somewhere with the control key pressed...
By the time you get the KeyPress event, which you won't when the form has any controls, the Control key state is already applied to the pressed key. So you'll get, say, Ctrl+V:
Ctrl+A = 1, etcetera, through Ctrl+Z = 26. This is very likely what you want to do, you could also use the Control.ModifierKeys property:
Beware that many keys don't generate a KeyPressed event, like Ctrl+F1. KeyDown is required to test them.
You should use Control.ModifierKeys in whatever operation that should be affected by whether or not the control key is down. This timer's Tick event handler works fine: