[英]Winforms c# - Set focus to first child control of TabPage
假設我有一個嵌套在TabControl
的Textbox
。
當表單加載時,我想關注該Textbox
(默認情況下焦點設置為TabControl
)。
只是在窗體的Load
事件中調用textbox1.focus()
似乎不起作用。
我已經能夠通過執行以下操作來關注它:
private void frmMainLoad(object sender, EventArgs e)
{
foreach (TabPage tab in this.tabControl1.TabPages)
{
this.tabControl1.SelectedTab = tab;
}
}
我的問題是:
有沒有更優雅的方式來做到這一點?
以下是解決方案:
private void frmMainLoad(object sender, EventArgs e)
{
ActiveControl = textBox1;
}
然而,更好的問題是為什么......我不完全確定那個問題的答案是什么。
編輯:我懷疑它與表單和TabControl都是容器這一事實有關,但我不確定。
嘗試將其放入Form_Shown()
事件中。 因為它在容器中,所以放入Form_Load甚至Form()構造函數都行不通。
嘗試使用textbox1.Select()
而不是textbox1.Focus()
。 這幫我幾次。
我在另一個用戶控件中有一個用戶控件。 textbox1.Select()為我工作但textbox1.Focus()不起作用。
您也可以嘗試將Tabstop設置為false,textbox1.Focus(),TabStop為true。
您只需要將控件的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);
}
}
}
private void ChildForm1_Load(object sender, EventArgs e)
{
ActiveControl = txt_fname;
}
我使用此代碼它在win選項卡控件或dotnetbar supertab控件上工作正常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.