Propriéte combobox

Signaler
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009
-
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009
-
Bonjour a tous!!!


Dans une combobox j'ai une liste deroulante contient des string, je voulais savoir si possible s'il existe une propriéte dans combobox qui attribue un int a chacun de mes string.


En fait je dois faire un enregistrement dans une base , dans ma base les types (des noms que je dois choisir) sont de type int.


Quequ'un aurait t'il une idée SVP?

17 réponses

Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

J'ai trouver une solution si elle te vas. En gros c'est une proprité qui te donne le N° d'index de l'elemnt selectionner donc si dans la liste le 1er element est choisi son index sera 1 etc.. Il te suffit alors de recuperer la valeur et l'envoyer dans ta base de donner. Je t'ai fai un petit programme de demonstration ci-join.
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.text.Text = this.combo.SelectedIndex.ToString() ;
        }
    }
}
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

Oui c'est bien ça , le premier element de la liste son index sera 1 et ainsi de suite.
J'ai pas eu ton prog, tu peux m'envoyer le lien s'il te plait?
Merci d'avance
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

Ok ,merci je vais voir si ça marche.
merci encore
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

Lien : ICI
Messages postés
152
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
2 juin 2008
1
Petite rectification :

L'index du premier élément de la liste ne sera pas 1 mais bien 0.

si aucun élément n'est séléctionné, SelectedIndex vaudra alors -1.

________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

En fait elle marche ton application, c'est bien ce que je cherche mais  le numéro attribué ne doit pas s'afficher.
Quand je clique sur a par exemple l'utilisateur voir a , quand je dois créer l'enregistrement dans ma base je dois avoir 1.
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

Oui exacte. Il suffit d'utilisé l'exemple pour s'en rendre compte :)
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

Pour avoir 1 il te suffit de rajouter 1 dans la fonction de recupération :

    private void button1_Click(object sender, EventArgs e)
        {
            this.text.Text = this.combo.SelectedIndex.ToString()+1 ;
        }
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

Oups ! le +1 ne fonction pas ici car il interprete le +1 comme une chaine de caractere et ne fait pa la somme. pour faire la somme il te faut faire l'addition et l'affiche separement.

        private void button1_Click(object sender, EventArgs e)
        {
            int val = 0;
            val = this.combo.SelectedIndex + 1;
            this.text.Text = val.ToString();
        }
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

Voici ma fonction de recuperation, quand je clique etat de creation je peux commencer a remplir mon formulaire
j'ai vu tu as créer un bouton text, c'est ce qui me pose un petit prob, je dois trouver un evenement qui doit le remplacer..
(desolé je suis stagiaire j'ai commencé C# il y a juste 1mois) 








override



public



void
PasserDansEtat_Création(){


Type
Toto =

typeof
(

EnmModesDePaiement
);


MemberInfo
[] mis;


Mon2EnumItemType
item;


string
Description2;


//EnmTypeDeComposition item;






List
<

Mon2EnumItemType
> items =

new



List
<

Mon2EnumItemType
>();


foreach
(

EnmModesDePaiement
v2

in



Enum
.GetValues(t)){

item =


new



Mon2EnumItemType
();mis2 = Toto.GetMember(v.ToString());

item2.Value = v;

item2.Description2 = v.ToString();


if
(mis2.Length > 0){


DescriptionAttribute
[] da = (

DescriptionAttribute
[])mis2[0].GetCustomAttributes(

typeof
(

DescriptionAttribute
),

true
);


if
(da.Length > 0){

item2.Description = da[0].Description;

}

}

items.Add(item);


}CboModeDePaiement.DataSource = items2;

CboModeDePaiement.DisplayMember =


"Description"
;
}
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

Il te suffit de recuper val et le stocker dans ta base. Met moi exactement ce ki lte manque dans ton code c'est pas tres claire pour moi.
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

dis moi tu es la? j'ai toujours pas reussir a avoir les valeurs.
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

je comprend pas ton probleme essaie d'etre plus precis stp
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

c'est pour revenir a mon petit probléme d'hier.
j'ai essayé cette fonction
CboConditionsPaiementNbreDeJours.ValueMember=

"Value1";
En pensant qu'il attribuera une valeur a l'élement que j'ai selectionné dans ma combo ça marche pas.
je t'envoie toutes mes démarches:

Ma fonction Enum
using

System;
using

System.Collections.Generic;
using

System.ComponentModel;
using

System.Data;
using

System.Data.SqlClient;
using

System.Drawing;
using

System.Text;
using

System.Windows.Forms;
using

System.Reflection;
using

BLL;
public

enum
EnmConditionsPaiementNbreDeJours{

[

Description(
" à 30 jours")]à30Jours = 1,

[

Description(
"à 60 jours")]à60Jours = 2,

[

Description(
"à 90 jours")]à90Jours = 3,

[

Description(
"Comptant")]Comptant = 4

}

Dans mon Formulaire:

public

struct
Mon1EnumItemType{

public
EnmConditionsPaiementNbreDeJours Value1;

public
string Description1;

// MonEnumItemType item;

public
override
string ToString(){

return
this.Description1;}

}

Puis :

Type T =
typeof(
EnmConditionsPaiementNbreDeJours);

MemberInfo[] mis1;

Mon1EnumItemType item1;

string Description1;

//EnmTypeDeComposition item;

List<
Mon1EnumItemType> items1 =
new
List<
Mon1EnumItemType>();

foreach (
EnmConditionsPaiementNbreDeJours v1
in
Enum.GetValues(t)){

item1 =

new
Mon1EnumItemType();mis1 = T.GetMember(v1.ToString());

item1.Value1 = v1;

item1.Description1 = v1.ToString();

if (mis1.Length > 0){

DescriptionAttribute[] da1 = (
DescriptionAttribute[])mis1[0].GetCustomAttributes(
typeof(
DescriptionAttribute),
true);

if (da1.Length > 0){

item1.Description1 = da1[0].Description;

}

}

items1.Add(item1);

CboConditionsPaiementNbreDeJours.DataSource = items1;

CboConditionsPaiementNbreDeJours.DisplayMember =

"Description";CboConditionsPaiementNbreDeJours.ValueMember=

"Value1";}

Quand j'essais de créer un enregistrement , en debeugant mon application en mettant un point d'arret sur ma requette SQL
j'obtient:
INSERT

INTO Client
VALUES
('ci','CINDY','3,rue pierre',
'residence dr marc','45000','RAMBOUILLET','98753'

,'0123','Mode de paiement :','à 60 jours','FinMois','Traite','RAMBOUILLET','CI','C1','assure'

,'a','False','0123','SON',' 3',' 2','franck','hjujfjj','SONY','False','True','cindy@delthom','CIN'

,'2','1,6','sghyjh','123','outy','759','pzry','5863','egn','7256','3','7','9')

Le probléme j'aimerais avoir des entires a la place: 'Chéque :  ,'à 60 jours' ,FinMois','  Traite,
En gros quand je clique sur chéque dans ma combo au lieux qu'il m'affiche chéque plutot un int :
J'ai essayé:CboConditionsPaiementNbreDeJours.ValueMember= "Value1"; ça marche toujours pas.
Messages postés
40
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
23 février 2009

Je croi avoir compris ton probleme. Dit moi si je fait  fausse route mais si j'ai bien compris ton probleme est que avec mon programme il faut appuyé sur le bouton et toi tu veu que ca se fasse directement des que le combo prend le focus. C'est ca ? Car dans mon idée la manip de recuperer les valeurs se fesait plutot lorsque l'utilisateur valide le tout. Peut-tu m'envoyer ton interface graphique ( un screen me suffira ) sinon il te faudra usé des thread
Messages postés
182
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
25 décembre 2009

Bonjour!!
Finalement j'ai trouvé la solution.En fait dans ma combobox il fallait utiliser la fonction ma combo.SelectedIndex.
merci pour ton aide.
Par contre  je cherche une fonction qui permet de convertir (un point virgule ent point).