Frage

Sagen, dass ich eine Textbox nested within a TabControl.

Wenn das Formular geladen wird, möchte ich den Fokus auf den Textbox (standardmäßig wird der Fokus wird auf die TabControl).

Einfach anrufen textbox1.focus() in der Load Ereignis des Formulars nicht zu funktionieren scheinen.

Ich habe in der Lage zu konzentrieren, es auf folgende Weise:

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

Meine Frage ist:

Gibt es eine elegantere Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Die folgenden ist die Lösung:

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

Die bessere Frage wäre jedoch, warum...Ich bin mir nicht ganz sicher, was die Antwort ist.

Edit:Ich vermute, dass es etwas mit der Tatsache zu tun, dass sowohl die form, und das TabControl-Steuerelement als Container, aber ich bin mir nicht sicher.

Andere Tipps

Versuchen Sie es in der Form_Shown() event.Weil es in einem Behälter, setzen in die Form_Load-oder sogar die Form () - Konstruktor wird nicht funktionieren.

Versuchen, zu verwenden textbox1.Select() statt textbox1.Focus().Dies hat mir geholfen, ein paar mal.

Sie müssen nur hinzufügen die Kontrolle.Wählen Sie() für das Steuerelement, zu diesem code.Ich habe diese verwendet, um setzen Sie den Fokus auf Steuerelementen, die während der Validierung, wenn Fehler vorhanden sind.

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);
            }
        }
    }

Ich hatte ein Benutzersteuerelement in einem anderen Benutzersteuerelement.textbox1.Wählen Sie() für mich gearbeitet, aber textbox1.Focus() hat nicht funktioniert.

Sie können auch versuchen, die Einstellung der Tabstop auf false, "textbox1".Fokus(), TabStop true.

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

        }

ich benutze diesen code, es funktioniert gut auf win-tab-Steuerelement oder dotnetbar supertab contrl

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top