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

Gali
quelle

Antworten:

341

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

this.ActiveControl = yourtextboxname;
V4Vendetta
quelle
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

Raumfahrt
quelle
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 .

Neil Knight
quelle
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();
    }
DavidG
quelle
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().

GRC
quelle
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();
        }
    }
}
Ben
quelle
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.

Mehmet Taha Meral
quelle
3

Verwenden Sie das angezeigte Formular und setzen Sie es

MyTextBox.Focus();
Nitin ...
quelle
3

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

YourTextboxName.Focus();

Es wird klappen.

Shakaib Akhtar
quelle
2

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

user9248597
quelle
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.

Aparna Ratheesh
quelle
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.

Mustafa
quelle
0

es hat bei mir funktioniert setze tabindex auf 0 this.yourtextbox.TabIndex = 0;

Muhafil Saiyed
quelle
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();
    }
MarkLee
quelle
-5

In jquery setze den Fokus

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

oder in Javascript können Sie tun

window.onload = function() {
  document.getElementById("txtBox1").focus();
};
Sudip Bhattacharya
quelle
4
Dies ist möglicherweise eine gute Antwort auf eine Website-Frage, diese ist jedoch mit c#und gekennzeichnet winforms.
Ben Voigt