У меня странный.
Создайте новую форму. Затем добавьте следующую функцию:
protected override void OnLoad ( EventArgs e )
{
if ( _goWrong )
{
this.MinimumSize = new System.Drawing.Size ( 420, 161 );
this.Font = new Font ( "Tahoma", this.Font.Size, this.Font.Style );
}
TextBox box = new TextBox ();
this.Controls.Add ( box );
}
Если _goWrong является ложным, поэтому мы не устанавливаем минимальный размер или не изменяем шрифт, когда я открываю форму, в которой основное внимание уделяется вновь созданному TextBox. Затем пользователь может легко отпечатать.
Если _goWrong истинно, поэтому мы устанавливаем минимальный размер и меняем шрифт, когда форма открыта, фокус нигде не видно!
Что, черт возьми, происходит? Почему это может повлиять на фокус? Я что-то пропустил?
Это в .Net 2.0.5
Спасибо
Хорошо, я попробовал это и придумал несколько замечаний:
Я не могу объяснить, почему это происходит (я думал, что это может быть проблема с порядком табуляции - это не так), но это должно дать представление об обходном пути.
Если вы ошибаетесь, установка минимального размера формы перечеркивает фокус (идет в форму). Изменение шрифта не влияет. Это странно, однако...
UPDATE:
Настройка фокуса в OnLoad работает, хотя (box.Select()).
Пожалуйста, попробуйте использовать следующий метод. Вам нужно переопределить метод OnShown
, если вы не уверены, что функция минимизации влияет на вас.
protected override void OnShown( EventArgs e )
{
textbox1.Focus();
base.OnShown( e );
}
Сделайте это (если я правильно прочитал вашу проблему):
protected override void OnLoad ( EventArgs e )
{
if ( _goWrong )
{
this.MinimumSize = new System.Drawing.Size ( 420, 161 );
this.Font = new Font ( "Tahoma", this.Font.Size, this.Font.Style );
}
TextBox box = new TextBox ();
this.Controls.Add ( box );
box.Focus();//<----Add this line here and the textbox will get focus.
}
_goWrong
?