2008-09-07 239 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

相關問題