假设我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;
}
}
我的问题是:
有更优雅的方法吗?
答案 0 :(得分:46)
以下是解决方案:
private void frmMainLoad(object sender, EventArgs e)
{
ActiveControl = textBox1;
}
然而,更好的问题是为什么......我不完全确定那个答案是什么。
编辑:我怀疑它与表单和TabControl都是容器这一事实有关,但我不确定。
答案 1 :(得分:14)
尝试将其放入Form_Shown()
事件中。因为它位于容器中,所以放入Form_Load甚至Form()构造函数都不起作用。
答案 2 :(得分:4)
尝试使用textbox1.Select()
代替textbox1.Focus()
。这对我帮助了几次。
答案 3 :(得分:1)
您只需将控件的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);
}
}
}
答案 4 :(得分:1)
我在另一个用户控件中有一个用户控件。 textbox1.Select()为我工作但textbox1.Focus()不起作用。
你也可以尝试将Tabstop设置为false,textbox1.Focus(),TabStop为true。
答案 5 :(得分:0)
private void ChildForm1_Load(object sender, EventArgs e)
{
ActiveControl = txt_fname;
}
我使用此代码,它在win tab控件或dotnetbar supertab contrl
上工作正常