簡體   English   中英

Winforms c# - 將焦點設置為TabPage的第一個子控件

[英]Winforms c# - Set focus to first child control of TabPage

假設我有一個嵌套在TabControlTextbox

當表單加載時,我想關注該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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM