2008-09-07 241 views
19

假设我有一个嵌套在TabControl内的TextboxWinforms c# - 将焦点设置为TabPage的第一个子控件

当表单加载时,我想关注的是Textbox(默认情况下焦点设置为TabControl)。

只需拨打表格Load中的textbox1.focus()事件即可。

我已经能够做重点是以下几点:

private void frmMainLoad(object sender, EventArgs e) 
{ 
    foreach (TabPage tab in this.tabControl1.TabPages) 
    { 
     this.tabControl1.SelectedTab = tab; 
    } 
} 

我的问题是:

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

回答

45

下面是解决方案:

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

更好的问题将是但为什么...我不能完全肯定的答案,一个是什么。

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

14

请尝试将它放入Form_Shown()事件中。因为它在一个容器中,所以放入Form_Load或者甚至Form()构造函数都不起作用。

+2

它不会在负载工作,因为负载后,该控件根据Tab键顺序和聚焦控制是重新聚焦“覆盖”。当您将控件集中显示时,没有任何东西可以通过聚焦另一个控件来“覆盖”您的呼叫。 – Marek 2009-12-09 10:46:47

1

您只需将控件的Control.Select()添加到此代码。在验证过程中,当出现错误时,我已经使用它来设置控件的焦点。

​​
4

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

1

我在另一个用户控件中有一个用户控件。 textbox1.Select()为我工作,但textbox1.Focus()没有工作。

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

0
private void ChildForm1_Load(object sender, EventArgs e) 
     { 
      ActiveControl = txt_fname; 

     } 

我用这个代码,它工作在Win标签控件或细dotnetbar SUPERTAB CONTRL

相关问题