Wie kann ich mich beim Laden des Formulars auf TextBox konzentrieren?


156

Ich habe in meinem C # -Programm eine Textbox

Ich brauche das, wenn das Programm startet, der Fokus auf der Textbox liegt

Ich versuche dies auf Form_Load:

MyTextBox.Focus();

aber es wird nicht funktionieren

Antworten:


341

Legen Sie die ActiveControlEigenschaft des Formulars fest und es sollte Ihnen gut gehen.

this.ActiveControl = yourtextboxname;

1
Ich habe es versucht für ComboBox. Aber es funktioniert auch nicht!
Alex Jolig

1
Danke, das hat bei mir funktioniert, wo alles andere nicht funktioniert hat. Ich bin mir nicht sicher, warum der Tab-Index = 0 nicht funktioniert, aber es gibt wahrscheinlich eine seltsame Reihenfolge der Vorgänge beim Laden des Formulars / Anzeigen des Dialogfelds.
David Carrigan

1
VERSUCHEN SIE DIESES >>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich

3
Das funktioniert gut, aber warum hat es nicht MyTextBox.Focus();funktioniert - das scheint gut zu funktionieren, sobald das Programm ausgeführt wird.
Levon

2
Schreiben this.ActiveControl = textBox1;Jeder versteht die Bedeutung von "textBox1". "youttextboxname" klingt wie... = "MyTextBox";
Bitterblue

25

Überprüfen Sie Ihre Tab-Reihenfolge und stellen Sie sicher, dass das Textfeld auf Null gesetzt ist


Arbeiten. Oder einfach tabindex als erstes "fokussierbares" Cursorelement im Formular.
Apincik

15

Du könntest es versuchen:

MyTextBox.Select ();

Laut Dokumentation:

Die Select-Methode aktiviert das Steuerelement, wenn das Selectable Style-Bit des Steuerelements in ControlStyles auf true gesetzt ist, es in einem anderen Steuerelement enthalten ist und alle übergeordneten Steuerelemente sichtbar und aktiviert sind.

Sie können zunächst überprüfen, ob das Steuerelement auswählbar ist, indem Sie die Eigenschaft MyTextBox.CanSelect überprüfen .


15

Sie können den Fokus nicht auf ein Steuerelement setzen, wenn es nicht gerendert wurde. Form.Load () tritt auf, bevor die Steuerelemente gerendert werden.

Gehen Sie zu den Ereignissen des Formulars und doppelklicken Sie auf das Ereignis "Angezeigt". Rufen Sie im angezeigten Ereignishandler des Formulars die Methode control.Focus () auf.

    private void myForm_Shown(object sender, EventArgs e)
    {
        // Call textbox's focus method
        txtMyTextbox.Focus();
    }


6

Textbox.Focus()"Versucht", den Fokus auf das Textfeldelement zu setzen. Wenn das Element sichtbar ist, Focus()funktioniert die Sichtbarkeit beispielsweise nicht. Stellen Sie also sicher, dass Ihr Element sichtbar ist, bevor Sie es aufrufen Focus().


5

Der Grund, warum Sie es nicht zum Laufen bringen können, ist, dass das LoadEreignis aufgerufen wird, bevor das Formular gezeichnet oder gerendert wird.

Es ist, als würde man einer Pizzeria erzählen, wie man ihre Pizza macht, und sie dann bitten, Ihnen ein Bild davon zu schicken, wie viel Peperoni auf Ihrer Pizza ist, bevor sie es gemacht haben.

using System;
using System.Windows.Forms;

namespace Testing
{
    public partial class TestForm : Form
    {
        public TestForm()
        {
            InitializeComponent();

            Load += TestForm_Load;

            VisibleChanged += TestForm_VisibleChanged;

            Shown += TestForm_Shown;

            Show();

        }

        private void TestForm_Load(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_VisibleChanged(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_Shown(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called after the form is rendered.");
            txtFirstName.Focus();
        }
    }
}

4

Ich habe mein Problem mit der Änderung der "TabIndex" -Eigenschaft von TextBox gelöst. Ich habe 0 für TextBox gesetzt, damit ich es beim Start des Programms auf Form fokussieren kann.


3

Verwenden Sie das angezeigte Formular und setzen Sie es

MyTextBox.Focus();

3

Setzen Sie den Wert der Tab Index-Eigenschaft auf 0 und schreiben Sie dann in die Formularladefunktion:

YourTextboxName.Focus();

Es wird klappen.


2

Sie können entweder textBox1.select();oder den TabIndex in der Textfeldeinstellung verwenden. TabIndex=0zuerst fokussiert.


Wenn wir textBox1.select () aufrufen; Im Formularladeereignishandler wird der Fokus in der textBox1 festgelegt.
Tushar R.

1

Setzen Sie Tabstop auf True und TabIndex auf das Minimum des Steuerelements, auf das Sie sich konzentrieren müssen.

Beispiel: Wenn Sie 2 TextBoxen haben: TextBox1 und TextBox2, setzen Sie Tabstop für beide auf True und TabIndex auf 0 bzw. 1. Wenn das Formular geladen wird, liegt der Fokus auf TextBox1 und beim Drücken der Tabulatortaste wird der Fokus auf TextBox2 verschoben.


1

Gehen Sie in Ihrem Formular zu Eigenschaften und stellen Sie sicher, dass die Eigenschaft "TopMost" auf "true" gesetzt ist, um Ihr Problem zu lösen.



0

Schließlich fand ich das Problem, dass ich Metro Framework verwendet habe und alle Ihre Lösungen funktionieren nicht mit metroTextBox, und alle Ihre Lösungen funktionieren mit normalen TextBox in Laden, Zeigen, Sichtbarkeitsänderung, Ereignissen, sogar der Registerkartenindex = 0 ist gültig.

   // private void Form1_VisibleChanged(object sender, EventArgs e)
   // private void Form1__Shown(object sender, EventArgs e)
    private void Form1_Load(object sender, EventArgs e)
    {

        textBox1.Select();
        this.ActiveControl=textBox1;
        textBox1.Focus();
    }

-5

In jquery setze den Fokus

$(function() {
  $("#txtBox1").focus();
});

oder in Javascript können Sie tun

window.onload = function() {
  document.getElementById("txtBox1").focus();
};

4
Dies ist möglicherweise eine gute Antwort auf eine Website-Frage, diese ist jedoch mit c#und gekennzeichnet winforms.
Ben Voigt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.