web-dev-qa-db-fra.com

comment mettre le focus sur TextBox lorsque le formulaire est chargé?

J'ai dans mon programme C # textBox

J'ai besoin que 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 marchera pas

134
Gali

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

this.ActiveControl = yourtextboxname;
301
V4Vendetta

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

21
Spacemancraig

Tu pourrais essayer: 

MyTextBox.Select ();

Selon la documentation:

La méthode Select active le contrôle si celui-ci est Selectable style bit est défini sur true dans ControlStyles, il est contenu dans un autre control, 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 .

14
Neil Knight

Si vous ne souhaitez définir le focus que la première fois que le formulaire est affiché, essayez de gérer l'événement Form.Shown et de le faire ici. Sinon, utilisez Control.VisibleChanged .

12
Andy Johnson

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 "Illustré". Dans le gestionnaire d'événements indiqué dans le formulaire, appelez la méthode control.Focus (). 

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

Textbox.Focus() "Essaie" de définir le focus sur l'élément de zone de texte. Si 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
GRC

Si vous ne pouvez pas le faire fonctionner, c'est parce que l'événement Load est appelé avant que le formulaire ne soit dessiné ou rendu.

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

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
Ben

utiliser le formulaire affiché et définir

MyTextBox.Focus();
3
Nitin...

J'ai résolu mon problème en changeant la propriété "TabIndex" de TextBox. Je mets 0 pour TextBox que je veux concentrer sur le formulaire lorsque le programme démarre.

3

Définissez la valeur de la propriété Index d'index = 0, puis dans la fonction de chargement de formulaire, écrivez:

YourTextboxName.Focus();

Ça va marcher.

2
Shakaib Akhtar

cela a fonctionné pour moi mettre tabindex à 0 this.votretextbox.TabIndex = 0;

0
Muhafil Saiyed

Définissez Tabstop sur True et TabIndex au minimum sur le contrôle sur lequel vous avez besoin de se concentrer.

par exemple. Si vous avez 2 zones de texte: TextBox1 et TextBox2, définissez Tabstop sur True pour les deux et TabIndex sur 0 et 1 respectivement. Lorsque le formulaire est chargé, le focus est sur TextBox1 et sur la touche 'Tab', le focus se déplace sur TextBox2.

0
Aparna Ratheesh

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

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

J'aime ça ... Merci!

0
Ghayas

Vous pouvez utiliser soit textBox1.select(); ou le paramètre TabIndex in textbox. TabIndex=0 concentré en premier.

0
user9248597