Problem recognizing a keystroke

BobFromBoston
12-16-2005, 02:49 PM
Hi,

In Visual Studio 2003 and C# 1.0, I set KeyPreview to true for the form, so that while a form has the focus, I can get notified when a user presses a key on the keyboard, thusly:

private void MyForm_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
switch ( e.KeyCode )
{
case Keys.F5: break;
case Keys.F6: break;
case Keys.F7: break;
}
}

In this way, everything was working fine. But then I needed a MapPoint control on that form, and since I've added it, my ability to detect
the keyboard has been compromised. Now, it only works after I have opened a client form with a button click or clicked on a ListBox control on the form. From then on, keystrokes are detected fine. But I'd like it to work the first time, and without needing to know to click in these places. Clicking the form does not have the same effect as clicking in the controls I mentioned.

My question is what change can I make to the form or the control to allow me to fix this? It's puzzling, but I he there's a simple fix to it.

Thanks for the help.

BobFromBoston
12-18-2005, 12:33 AM
It seems, as one would expect, the focus is set to the new MapPoint cntrol, after it's initialized in my FORM_LOAD() function. And so long as the focus is on the control, the form's KeyUp event can not intercept the keystroke. While this is perfectly understandable, I can not understand why I am not able to programmatically change the focus to another control.

When I load the program, the F5 key does not work. But when I click inside a listbox, and move the focus away from MapPoint, the F5 does work. If I move the focus back to the MapPoint control, the F5 stops working. That's all fins and good. But why can I not move the focus with the Focus() method for the listbox? Why does that not do that same thing?

Thanks.

 
Web mp2kmag.com
mapforums.com