too long for a comment, includes link, and code ... but this is a comment ...
Lots of people have complained about a UserControl not firing the 'GotFocus() event. For example : UserControl and GotFocus() fyi : LostFocus() will fire as expected, in my experience. In the past, in a multiple Forms project, I've experimented with implementing 'Enter and 'Leave event handlers on a UserControl on each Form, and found that 'Enter is only called on Form load, once.
Evidently the Controls on the UserControl "take focus" (in a way I can't explain, but perhaps one of SO's WinForms gurus will). Perhaps this is related to the fact that UserControl descends from ContainerControl ?
I experimented with writing one 'GotFocus() handler :
private void Control_GotFocus(object sender, EventArgs e)
{
Console.WriteLine("Control GotFocus : " + ((sender as Control).Name));
}
And then, in the UserControl 'Load event, wired up all the Controls on the UserControl to that event handler : what I observed was that the Control on the UserControl with the lowest TabIndex would fire the 'GotFocus event just on launching the app, and on switching between Forms.
The only other thing I've seen mentioned in this situation is to make sure the 'IsTabStop property of the UserControl is set to 'True : this was from Shawn Wildermuth at MS in the context of a SilverLight related question, so no idea if this might apply in your case.
Another suggestion, which was to write a MouseDown or MouseClick event handler for the UserControl, and in that call: this.SetFocus();
led me nowhere.
Hope you get an answer !