Winforms С# - Установить фокус на первое дочернее управление TabPage
Скажем, у меня есть Textbox
, вложенный в TabControl
.
Когда форма загружается, я хотел бы сосредоточиться на этом Textbox
(по умолчанию фокус установлен на TabControl
).
Просто вызов textbox1.focus()
в событии Load
формы не работает.
Мне удалось сфокусировать его, выполнив следующие действия:
private void frmMainLoad(object sender, EventArgs e)
{
foreach (TabPage tab in this.tabControl1.TabPages)
{
this.tabControl1.SelectedTab = tab;
}
}
Мой вопрос:
Есть ли более элегантный способ сделать это?
Ответы
Ответ 1
Ниже приведено решение:
private void frmMainLoad(object sender, EventArgs e)
{
ActiveControl = textBox1;
}
Лучше будет вопрос, почему... Я не совсем уверен, что ответ на этот вопрос.
Изменить: я подозреваю, что это связано с тем, что и форма, и TabControl являются контейнерами, но я не уверен.
Ответ 2
Попробуйте поместить его в событие Form_Shown()
. Поскольку это в контейнере, установка конструктора Form_Load или даже Form() не будет работать.
Ответ 3
Попробуйте использовать textbox1.Select()
вместо textbox1.Focus()
. Это помогло мне несколько раз.
Ответ 4
Вам просто нужно добавить Control.Select() для вашего элемента управления в этот код. Я использовал это, чтобы установить фокус на элементы управления во время проверки, когда есть ошибки.
private void ShowControlTab(Control ControlToShow)
{
if (!TabSelected)
{
if (ControlToShow.Parent != null)
{
if (ControlToShow.Parent.GetType() == typeof(TabPage))
{
TabPage Tab = (TabPage)ControlToShow.Parent;
if (WOTabs.TabPages.Contains(Tab))
{
WOTabs.SelectedTab = Tab;
TabSelected = true;
return;
}
}
ShowControlTab(ControlToShow.Parent);
}
}
}
Ответ 5
У меня был пользовательский контроль внутри другого пользовательского элемента управления. textbox1.Select() работал у меня, но textbox1.Focus() не работал.
Вы также можете попробовать установить Tabstop в false, textbox1.Focus(), TabStop true.
Ответ 6
private void ChildForm1_Load(object sender, EventArgs e)
{
ActiveControl = txt_fname;
}
Я использую этот код, он отлично работает на панели управления вкладками или в dotnetbar supertab contrl