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

Gali
la source

Réponses:

341

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

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

Spacemancraig
la source
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 .

Neil Knight
la source
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();
    }
DavidG
la source
12

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

Andy Johnson
la source
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().

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

Mehmet Taha Meral
la source
3

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

MyTextBox.Focus();
Nitine ...
la source
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.

Shakaib Akhtar
la source
2

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

user9248597
la source
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.

Aparna Ratheesh
la source
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.

Mustafa
la source
0

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

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

Dans jquery, définir le focus

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

ou en Javascript, vous pouvez faire

window.onload = function() {
  document.getElementById("txtBox1").focus();
};
Sudip Bhattacharya
la source
4
Cela peut être une bonne réponse à une question de site Web, mais celle-ci est étiquetée c#et winforms.
Ben Voigt