Winforms c# - 将焦点设置为TabPage的第一个子控件

时间:2008-09-07 18:57:25

标签: c# .net winforms focus

假设我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;
     }
 }

我的问题是:

有更优雅的方法吗?

6 个答案:

答案 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

上工作正常