слишком долго для комментария, содержит ссылку и код ... но это комментарий ...
Многие люди жаловались на то, что UserControl не запускает событие 'GotFocus (). Например: UserControl и GotFocus () fyi: LostFocus () будет запускаться, как и ожидалось, по моему опыту. В прошлом, в проекте с несколькими формами, я экспериментировал с реализацией обработчиков событий Enter и Leave в UserControl в каждой форме и обнаружил, что Enter вызывается только при загрузке формы один раз.
Очевидно, что элементы управления в UserControl "сфокусированы" (в некотором смысле, я не могу это объяснить, но, возможно, это сделает один из гуру SO ForForum). Возможно, это связано с тем, что UserControl происходит от ContainerControl?
Я экспериментировал с написанием одного обработчика GotFocus ():
private void Control_GotFocus(object sender, EventArgs e)
{
Console.WriteLine("Control GotFocus : " + ((sender as Control).Name));
}
А затем, в событии Load UserControl, подключил все элементы управления UserControl к этому обработчику событий: я заметил, что элемент управления UserControl с самым низким TabIndex будет запускать событие GotFocus только при запуске приложения и при переключении между формами.
Единственное, что я заметил в этой ситуации, это то, что свойство IsTabStop в UserControl установлено в значение True: это было от Шона Вильдермута из MS в контексте вопроса, связанного с SilverLight, поэтому нет Идея, если это может применяться в вашем случае.
Другое предложение, которое заключалось в написании обработчика событий MouseDown или MouseClick для UserControl, и в этом вызове: this.SetFocus();
меня ни к чему не привело.
Надеюсь, вы получите ответ!