comment mettre l'accent sur TextBox lorsque le formulaire se charge?


156

J'ai dans mon programme C # textBox

J'en ai besoin lorsque le programme démarre, l'accent sera mis sur la zone de texte

J'essaye ceci sur Form_Load:

MyTextBox.Focus();

mais ça ne fonctionnera pas

Réponses:


341

Définissez la ActiveControlpropriété du formulaire et tout devrait bien se passer.

this.ActiveControl = yourtextboxname;

1
J'ai essayé ça pour ComboBox. Mais ça ne marche pas non plus!
Alex Jolig

1
Merci, cela a fonctionné pour moi là où tout le reste n'a pas fonctionné. Je ne sais pas pourquoi Tab Index = 0 ne fonctionnera pas, mais il y a probablement un ordre étrange des opérations en cours lors du chargement du formulaire / affichage de la boîte de dialogue.
David Carrigan

1
ESSAYEZ CECI >>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich le

3
Cela fonctionne très bien, mais pourquoi n'a pas MyTextBox.Focus();fonctionné - cela semble bien fonctionner une fois que le programme est en cours d'exécution.
Levon

2
Ecrire this.ActiveControl = textBox1;Tout le monde comprend la signification de "textBox1". "youttextboxname" ressemble à... = "MyTextBox";
Bitterblue

25

vérifiez votre ordre de tabulation et assurez-vous que la zone de texte est définie sur zéro


Travail. Ou simplement tabindex pour être le premier élément "focusable" du curseur dans le formulaire.
apincik

15

Tu pourrais essayer:

MyTextBox.Select ();

Selon la documentation:

La méthode Select active le contrôle si le bit de style sélectionnable du contrôle est défini sur true dans ControlStyles, il est contenu dans un autre contrôle et tous ses contrôles parents sont à la fois visibles et activés.

Vous pouvez d'abord vérifier si le contrôle peut être sélectionné en inspectant la propriété MyTextBox.CanSelect .


15

Vous ne pouvez pas définir le focus sur un contrôle s'il n'a pas été rendu. Form.Load () se produit avant le rendu des contrôles.

Accédez aux événements du formulaire et double-cliquez sur l'événement "Montré". Dans le gestionnaire d'événements affiché du formulaire, appelez la méthode control.Focus ().

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


6

Textbox.Focus()"Essaie" de mettre le focus sur l'élément de zone de texte. Dans le cas où la visibilité de l'élément est masquée par exemple, Focus()ne fonctionnera pas. Assurez-vous donc que votre élément est visible avant d'appeler Focus().


5

La raison pour laquelle vous ne pouvez pas le faire fonctionner est que l' Loadévénement est appelé avant que le formulaire ne soit dessiné ou rendu.

C'est comme dire à une pizzeria comment faire votre pizza, puis leur demander de vous envoyer une photo de la quantité de pepperoni sur votre pizza avant de la préparer.

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

J'ai résolu mon problème avec la modification de la propriété "TabIndex" de TextBox. J'ai mis 0 pour TextBox que je veux me concentrer sur Form lorsque le programme démarre.


3

utiliser le formulaire affiché et définir l'événement

MyTextBox.Focus();

3

Définissez la valeur de la propriété Index Tab = 0, puis dans la fonction de chargement du formulaire, écrivez:

YourTextboxName.Focus();

Ça va marcher.


2

Vous pouvez utiliser soit textBox1.select();le paramètre TabIndex dans la zone de texte. TabIndex=0focalisé en premier.


Si nous appelons textBox1.select (); dans le gestionnaire d'événements de chargement de formulaire, il définit le focus dans le textBox1.
Tushar R.

1

Définissez Tabstop sur True et TabIndex au minimum sur le contrôle sur lequel vous devez vous concentrer.

Par exemple, si vous avez 2 TextBoxes: TextBox1 et TextBox2, définissez Tabstop sur True pour les deux et TabIndex sur 0 et 1 respectivement. Lorsque le formulaire se charge, le focus sera sur TextBox1 et en appuyant sur la touche «Tab», le focus se déplacera vers TextBox2.


1

sur votre formulaire, accédez aux propriétés et assurez-vous que la propriété "TopMost" est définie sur true, cela résoudra votre problème.


0

cela a fonctionné pour moi définir tabindex à 0 this.yourtextbox.TabIndex = 0;


0

Enfin, j'ai trouvé le problème que j'utilisais avec le framework metro et toutes vos solutions ne fonctionneront pas avec metroTextBox, et toutes vos solutions fonctionneront avec textBox normal en load, show, visibilité_change, événements, même l'onglet index = 0 est valide.

   // 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

Dans jquery, définir le focus

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

ou en Javascript, vous pouvez faire

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

4
Cela peut être une bonne réponse à une question de site Web, mais celle-ci est étiquetée c#et winforms.
Ben Voigt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.