C# et les focus

Signaler
Messages postés
9
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
3 juillet 2008
-
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008
-
Salut à tous.
Je suis debutante en prog. j'aimerais savoir comment je pourrais faire pour passer le focus direttement à ma textbox quand j'ouvre un form sur lequel j'ai un textbox et un comboBox sur lequel je declenche un event pour ouvrir une autre form encore..
j'ai essayé un textBox.Focus();
mais je ne prend pas le controle si je ne clique pas  à l'interieur à l'aide du mouse.
Quelqu'un pourrait me filer un coup de main?
merci de votre aide en c# svp

10 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Bonsoir,
Essayes comme ceci:
this.textBox.Focus();

A mettre dans l'event Activate de ta form.

<hr />
-My Blog-
Messages postés
9
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
3 juillet 2008

Salut encore à tous,
je viens d'éssayer en cliquant actived d'où je me retrouve avec ceci:
private void frPreli_Activated(object sender, EventArgs e)
        {
           this.textBoxUt.Focus();
        }
mais quand je fais le deploy, le form s'ouvre mais je ne vois pas le curseur clignoter dans ma textBox. Quand je fais un MessageBox.Show("test"+this.textBoxUt.Focus();j'ai poutant test=true ce qui veux dire?? Ai je oublié quelque chose? je voudrais vraiment realiser cela car ainsi je pourrais me servir du tab après impression dans la textBox.
Merci du coup de main.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Tu dis que ça ne marche pas au deploy, ça sous-entends que ça fonctionne au debug?
Tu es certain que tu n'as pas un bout de code quelque part qui donne le focus à un autre composant?
Tu fais bien un projet WinForm (= pas sous PocketPC)

<hr />
-My Blog-
Messages postés
9
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
3 juillet 2008

salut, je me suis mal exprimé ça marche au deploy mais ça ne fait pas ce que je veux:.
c-a-d avoir le curseur qui bouge dans la textbox à l'ouverture de mon form... je travaille avec un emulateur pour essayer ma production.. Aurais tu une idée pour me depanner? merci
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
C'est donc de l'embarqué (Pocket PC / Smartphone) ?

::|The S@ib|::
MVP C#.NET
Messages postés
9
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
3 juillet 2008

Salut à tous;

C'est un pocket pc....
Dans ma 1 form je fais un truc du genre:
Form f2=new Form();
textBox.Focus();
f2.Show();
Maintenant il me dit que mon textBox n'est pas referencé..
pourtant j'ai bien un textBox sur mon design2

Galère!!!
merci du help..
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
Bonjour,

Le f2.Show() fait perdre le focus à ta premiere form de toute façon...

Cordialement,

Bidou_01 

<hr />http://blog.corioland.eu
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Je viens d'essayer sous PocketPC, this.textbox.Focus() dans le form_load : fonctionne nickel.
Vérifie donc que tu n'as pas du code ailleurs qui fait prendre le focus à un autre Control...

<hr />
-My Blog-
Messages postés
9
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
3 juillet 2008

Salut à tous,
j'ai cette solution pour le focus dans la textBox...
frPreli fPrel = new frPreli();
fPrel.isFirstTime = true;
fPrel.Show();

Dans le form appelé j'implemente la methode sur un Paint..pour capturer le curseur..
//variable boolean
public bool isFirstTime;

 private void frPreli_Paint(object sender, PaintEventArgs e)
        {
            if (!isFirstTime) return;
            isFirstTime = false;
            textBoxUt.Focus();
           
        }
merci de votre aide..
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008

Bonsoir !

Je sais que cela fait très longtemps, mais au cas où tu te poserais toujours la question du focus pour tes applis, j'ai trouvé la solution.
Tu n'as qu'à aller faire un petit tour dans ton ".Designer.cs"

Exemple pour monForm1, va dans le fichier  monForm1.Designer.cs, tu verras ainsi tout un tas de paramètres liés à chacuns de tes controles.

Exemple :   (désolé d'avance pour la tartine de code, mais je veux être le PLUS CLAIR POSSIBLE avec un cas concret ^^)

//...
private void InitializeComponent()
        {
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            //
            // textBox1
            //
            this.textBox1.Location = new System.Drawing.Point(51, 86);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(177, 20);
            this.textBox1.TabIndex = 0;
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(109, 129);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(60, 29);
            this.button1.TabIndex = 1;
            this.button1.Text = "OK";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // label1
            //
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(48, 50);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(64, 13);
            this.label1.TabIndex = 2;
            this.label1.Text = "Your name :";
            //
            // EnterYourName
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(284, 206);
            this.ControlBox = false;
            this.Controls.Add(this.label1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.button1);
            this.MinimizeBox = false;
            this.Name = "EnterYourName";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Enter your name : (9 characters max)";
            this.Load += new System.EventHandler(this.EnterYourName_Load);
            this.ResumeLayout(false);
            this.PerformLayout();

        }
//...

=> Tu remarqueras le paramètre : TabIndex défini pour chacun des controles (voir en gras).
L'indexe des tabulations, justement, puisqu'il défini indirectement l'ordre des focus, commence à 0.
Défini donc le paramètre TabIndex du controle dont tu veux un focus à l'ouverture à 0, et les autres dans l'ordre croissant, et le tour est joué.

Voilà, si jamais tu te posais encore la question, j'espère t'avoir aidée.

...pour les autres, si vous trouvez la solution évidente et/ou le post dénué d'intérêt, prière de ne pas vous plier en quatre de rire derrière votre bureau (sisi, je vous ai vu !), c'est pour la bonne cause.

Bonne soirée à toutes et tous et bon Csharping !

Memento.