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

Cor*_*kie 20 .net c# focus winforms

说我有一个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;
     }
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是:

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

sam*_*son 46

以下是解决方案:

private void frmMainLoad(object sender, EventArgs e)
{
    ActiveControl = textBox1;
}
Run Code Online (Sandbox Code Playgroud)

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

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


小智 14

试着把它放在Form_Shown()活动中.因为它在容器中,所以放入Form_Load甚至Form()构造函数都行不通.

  • 它在Load中不起作用,因为在加载后,控件会根据Tab键顺序重新聚焦,并且聚焦控件被"覆盖".当您将控件聚焦于Shown时,没有任何东西可以通过聚焦另一个控件来"覆盖"您的调用. (2认同)