Valeur par defaut dans une combo box [Résolu]

Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 31 juil. 2006 à 14:36 - Dernière réponse :
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 2 août 2006 à 12:11
Salut,
voila j'ai vraiment un petit souci avec mes combo box. Impossible de leur donner une variable par defaut qui serait selectionnee dans ma liste et s'afficherait lorsque la liste ne serait pas encore deroulee.

J'ai tente quelque chose du genre :
this.cmbLanguage.SelectedIndex = cmbLanguage.FindString(LanguageContext.currentLC.CurrentLanguage.Name);

Sachant que : LanguageContext.currentLC.CurrentLanguage.Name est de type String. (c'est un peu complique d'expliquer ce machin mais si c'est utile je le ferais)

Sans succes !
J'ai aussi bidouille : this.cmbLanguage.SelectedText
Toujours sans succes.

SVP aider moi, c'est assez urgent et pis il ne me reste plus beaucoup de cheveux !!!

PS : Desole, a vous d'imaginer les accents, je travaille sur clavier qwerty en ce moment !
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 août 2006 à 14:37
3
Merci
Ben oui chez moi ça affiche EFGH.
Alors du coup... franchement j'ai aucune idée d'où provient le problème, mais il semblerait que ça ne vienne pas du code ????

<hr size="2" />VC# forever

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 31 juil. 2006 à 14:54
0
Merci
Si LanguageContext.currentLC.CurrentLanguage.Name retourne un string y'a forcément un problème étant donné que this.cmbLanguage.SelectedIndex attend un entier...

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 31 juil. 2006 à 14:57
0
Merci
Donc en fait si t'as un string à disposition, tu peux faire plutôt comme ceci :
this.comboBox.SelectedItem =
LanguageContext.currentLC.CurrentLanguage.Name;

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 31 juil. 2006 à 15:27
0
Merci
voire : monCombo.Text = LanguageContext.currentLC.CurrentLanguage.Name;

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 1 août 2006 à 09:30
0
Merci
Salut,
merci pour vos réponses rapides et désolé pour mon décalage mais je suis à l'étranger.
Effectivement je me suis embrouillée toute seule, this.cmbLanguage.SelectedIndex attend effectivement un int.

Mais j'ai essayé vos deux solutions et mon combo Box m'affiche toujours la première valeur de la liste sans tenir compte de la valeur courante.

J'ai donc essayer ça :
            this.cmbLanguage_frmIdentitier.SelectedIndex = cmbLanguage_frmIdentitier.FindString(LanguageContext.currentLC.CurrentLanguage.Name);

Je donne à FindSring un string et il me renvoie un int correspondant à l'index de ma recherche qui me sert à affecter mon "SelectedIndex".

ça marche toujours pas !!!

D'autres suggestions ?
Commenter la réponse de cs_egwene
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 1 août 2006 à 09:42
0
Merci
Ouf, j'ai un souci non ?
J'ai essayer betement ça :

this.cmbLanguage_frmIdentitier.SelectedIndex =           cmbLanguage_frmIdentitier.FindString("Espagnol");

Pourtant "Espagnol" apparait texto dans ma liste !!!

Je sais plus quoi faire là !
Commenter la réponse de cs_egwene
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 août 2006 à 11:01
0
Merci
A mon avis, tu as quelques chose dans l'event SelectedIndexChange (ou un autre) qui fait que ça ne marche pas.
Du genre, la combo sélectionne bien l'élément que tu veux, puis l'event reséléctionne le premier APRES coup.
Donc tu vois pas le changement!

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 1 août 2006 à 11:44
0
Merci
J'ai mis en commentaire tous les handlers concernant cette combo et j'ai refais le test :

this.cmbLanguage_frmIdentitier.SelectedIndex  =  cmbLanguage_frmIdentitier.FindString("Espagnol");

C'est toujours la premiere valeur de la liste qui s'affiche !!!
Commenter la réponse de cs_egwene
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 août 2006 à 11:54
0
Merci
Je suis presque sûr que tu changes la valeur après coup.
Tu peux pas montrer plus de code ?

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 1 août 2006 à 13:18
0
Merci
Si mais je sais pas trop quoi montrer qui pourrait etre utile. Voila tout ce qui concerne la combo.

private void cmbLanguage_frmIdentitier_SelectedIndexChanged(object sender, EventArgs e)
        {
            LanguageContext.currentLC = new LanguageContext(
                ((Language)cmbLanguage_frmIdentitier.SelectedItem).Id);
            this.SwitchLanguage();
        }

private System.Windows.Forms.ComboBox cmbLanguage_frmIdentitier;

et dans la fonction InitializeComponent( ) :
this.cmbLanguage_frmIdentitier = new System.Windows.Forms.ComboBox( );

// cmbLanguage_frmIdentitier
this.cmbLanguage_frmIdentitier.FormattingEnabled = true;
this.cmbLanguage_frmIdentitier.Location = new System.Drawing.Point(80, 345);
this.cmbLanguage_frmIdentitier.Name = "cmbLanguage_frmIdentitier";
this.cmbLanguage_frmIdentitier.Size = new System.Drawing.Size(145, 21);
this.cmbLanguage_frmIdentitier.TabIndex = 4;
this.cmbLanguage_frmIdentitier.DataSource = Language.GetList();
this.cmbLanguage_frmIdentitier.SelectedIndex = cmbLanguage_frmIdentitier.FindString("Espagnol");
this.cmbLanguage_frmIdentitier.SelectedIndexChanged +=
       new EventHandler(this.cmbLanguage_frmIdentitier_SelectedIndexChanged);
Commenter la réponse de cs_egwene
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 1 août 2006 à 13:34
0
Merci
Que fait la méthode SwitchLanguage?
Sinon comme petit test, j'ai crée une nouvelle form, mis un combo dessus et juste ça comme code :

private
void Form_Load(
object sender,
EventArgs e)
{
 
this.comboBox.DataSource =
this.Test();
 
this.comboBox.SelectedItem =
"EFGH";
}

private
ArrayList Test()
{
 
ArrayList al =
new
ArrayList();
  al.Add(
"ABCD");
  al.Add(
"EFGH");
  al.Add(
"IJKL");
 
return al;
}

Et ça marche sans problème.
Je persiste à dire que tu modifies la valeur après coup
Ou alors t'es sur que tu as "Espagnol" dans ta liste ? On sait jamais...
<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 1 août 2006 à 14:07
0
Merci
J'ai essayer ton test chez moi, j'ai creer un nouveau form, j'ai fait un copier coller de ton truc et ca m'affiche toujours le premier element de la liste soit dans ton test : ABCD !!!

J'ai rien personnalise, rien touche, il n'a pas de handler, y'a que la combo dans le form, j'ai meme pas renommer ! Donc la je vois pas !!! t'as combo quand tu execute elle t'affiche le cadre avec EFGH dedans toi ???

Bon sinon, c'est le debut de soiree pour moi donc je rentre, ne soyez pas surpris de ne plus avoir de retour de ma part. Je continuerai a chercher demain car c'est tres important ce machin dans mon appli.

Continuer de m'envoyer vos idees SVP, je testerai tout demain. Merci d'avance. Quel casse tete !
Commenter la réponse de cs_egwene
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 2 août 2006 à 06:54
0
Merci
Bon me revoila.

Apres d'autres tests et l'aide d'un collegue, je suis enfin arrivee a mettre ma valeur par defaut dans ma combo. Je n'avais pas fait attention mais tu avais mis cette affectation dans un handler ce qui n'etait pas le cas chez moi (oups !).

Donc effectivement, pour mettre une valeur par defaut dans une combo, il y a deux facons de proceder selon que l'on se trouve dans un form ou dans un panel. De plus, si en appuyant sur un bouton par exemple, notre DataSource change et avec elle la valeur par defaut, il suffit de refaire l'affectation de  SelectedItem dans le handler du bouton. ce qui donne niveau code :

        private void Form1_Load(object sender, EventArgs e)
        {
            this.comboBox1.SelectedItem = "EFGH";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.comboBox1.DataSource = Test2();
            this.comboBox1.SelectedItem = "RSTU";
         }

OU

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            this.comboBox1.SelectedItem = "EFGH";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.comboBox1.DataSource = Test2();
            this.comboBox1.SelectedItem = "RSTU";   
        }

Voila, corrigez moi si j'ai dit une betise. Merci pour votre aide, j'ai plus qu'a appliquer ca dans mon appli maintenant !!!
Commenter la réponse de cs_egwene
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 2 août 2006 à 09:38
0
Merci
Oui voilà tu as compris !
Sauf que y'a pas besoin de faire ça dans le Paint du panel...

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 2 août 2006 à 10:22
0
Merci
Ben j'y suis pas encore mais je pense que ca pourrait me servir de le faire dans le paint du panel car ds mon appli j'ai un form fixe avec un menu  et selon ou je clique dans le menu, je charge les differents panels qu'il me faut et donc c'est lors de leur chargement a eux que j'initialiserai les combo qu'ils contiennent et pas celui du form qui se chargera une fois au debut et puis c'est tout.

Je sais pas si c'est tres clair mais qu'est ce que tu en penses ? je debute hein, pas besoin de preciser  !
Commenter la réponse de cs_egwene
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 2 août 2006 à 10:34
0
Merci
Euh non, tu le fais juste après la création des panels !

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 2 août 2006 à 11:01
0
Merci
On se suit plus la je crois ! Je me re-explique mais c'est peut etre moi qui comprends pas ce que tu veux dire.

Je pense que pour initialiser une combo d'un panel avec une valeur par defaut, je dois le faire dans le handler Paint correspondant au panel et pas dans le handler Load de mon form vu que le form est charge au debut de mon application uniquement alors que moi j'ai besoin d'initialiser mes combo tout le long de mon appli a chaque fois que je charge un nouveau panel dans mon form.

C'est mieux ?
Commenter la réponse de cs_egwene
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 2 août 2006 à 11:03
0
Merci
Je suis pas sur de comprendre...
Tu crées des panels dynamiquement, et tu ajoutes des combo dynamiquement dans ces panels?

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
Messages postés
54
Date d'inscription
lundi 31 juillet 2006
Dernière intervention
3 avril 2008
- 2 août 2006 à 11:22
0
Merci
Et bien en gros j'ai un form principal avec un menu et un panel central que j'initialise au debut et que je remplace dynamiquement lorsque je clique dans le menu par des objets d'une classe que j'ai cree et qui derive de panel.
Commenter la réponse de cs_egwene
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 2 août 2006 à 11:25
0
Merci
J'arrive pas tellement à visualiser tout ça, mais ce que je peux te dire, c'est que l'event Paint est fait pour dessiner, et je suis persuadé que c'est la bonne solution de faire ça (selection par défaut) à cet endroit...

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.