Работает как в A2003, так и в A2007.
Как мы можем гарантировать, что выбранный TextBox получит фокус при загрузке формы? Если мы поместим MyTextBox.SetFocus в Form_Load, то получим ошибку:
can't move the focus to the control
Эта форма предназначена для быстрого ввода данных, и форма несколько перестраивается в зависимости от последних использованных настроек. Таким образом, существует несколько различных текстовых полей, любому из которых может потребоваться фокус в зависимости от пользователя. Мы не можем просто исправить это во время разработки, присвоив MyTextBox TabIndex=0.
В справке говорится что-то о вызове Repaint, что просто не имеет никакого смысла:
Вы можете переместить фокус только на видимый элемент управления или форму. Форма и элементы управления в форме не видны, пока не завершится событие загрузки формы. Таким образом, если вы используете метод SetFocus в событии Load формы для перемещения фокуса на эту форму, вы должны использовать метод Repaint перед методом SetFocus.
MyTextBox.SetFocus
(с соответствующим именем элемента управления) илиMe!MyTextBox.SetFocus
(илиMe.MyTextBox.SetFocus
)? НИКОГДА не рекомендуется ссылаться на элементы управления, кроме как на элементы родительской формы, и, возможно, существует проблема синхронизации с настройкой пространства имен, которое требуется для разрешения неуказанной ссылки на элемент управления. Однако я только что попробовал неопределенный элемент управления в своей тестовой форме, и он отлично работал без Меня! или я. - person David-W-Fenton   schedule 26.02.2011