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

cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 31 juil. 2006 à 14:36 - Dernière réponse : cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention
- 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 

21 réponses

Répondre au sujet
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 août 2006 à 14:37
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 31 juil. 2006 à 14:54
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 31 juil. 2006 à 14:57
0
Utile
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 31 juil. 2006 à 15:27
0
Utile
voire : monCombo.Text = LanguageContext.currentLC.CurrentLanguage.Name;

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 1 août 2006 à 09:30
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 1 août 2006 à 09:42
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 août 2006 à 11:01
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 1 août 2006 à 11:44
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 août 2006 à 11:54
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 1 août 2006 à 13:18
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 août 2006 à 13:34
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 1 août 2006 à 14:07
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 2 août 2006 à 06:54
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 2 août 2006 à 09:38
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 2 août 2006 à 10:22
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 2 août 2006 à 10:34
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 2 août 2006 à 11:01
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 2 août 2006 à 11:03
0
Utile
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
cs_egwene 54 Messages postés lundi 31 juillet 2006Date d'inscription 3 avril 2008 Dernière intervention - 2 août 2006 à 11:22
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 2 août 2006 à 11:25
0
Utile
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.

Valeur par defaut dans une combo box - page 2