20

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

我的问题是:

有没有更优雅的方法来做到这一点?

4

6 回答 6

47

以下是解决方案:

private void frmMainLoad(object sender, EventArgs e)
{
    ActiveControl = textBox1;
}

然而,更好的问题是为什么......我不完全确定那个答案是什么。

编辑:我怀疑这与表单和 TabControl 都是容器的事实有关,但我不确定。

于 2008-09-07T19:47:36.060 回答
15

尝试将其放入Form_Shown()事件中。因为它在容器中,所以放入 Form_Load 甚至 Form() 构造函数都行不通。

于 2009-03-11T14:50:06.530 回答
4

尝试使用textbox1.Select()而不是textbox1.Focus(). 这帮助了我几次。

于 2010-03-01T11:11:25.290 回答
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);
            }
        }
    }
于 2009-06-12T14:13:41.663 回答
1

我在另一个用户控件中有一个用户控件。textbox1.Select() 对我有用,但 textbox1.Focus() 不起作用。

您也可以尝试将 Tabstop 设置为 false、textbox1.Focus()、TabStop 为 true。

于 2011-03-30T14:07:28.383 回答
0
  private void ChildForm1_Load(object sender, EventArgs e)
        {
            ActiveControl = txt_fname;

        }

我使用此代码,它在 win tab control 或 dotnetbar supertab contrl 上运行良好

于 2014-05-27T12:01:03.070 回答