lefreeman42
Messages postés28Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention15 juin 2006
-
24 oct. 2005 à 18:16
lefreeman42
Messages postés28Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention15 juin 2006
-
27 oct. 2005 à 09:13
Bonjour,
Voila, je suis étudiant et j'ai commencé à programmer en c# depuis début septembre.
J'ai un problème avec une combobox.
Notre prof veut que nous fassions une recherche sur le nom de personnes
que nous avons créé à l'aide d'un formulaire avec une collection
(jusque la pas de soucis), mais si nous mettons deux fois le même nom
alors il y a un plantage.Donc j'ai créé un numéro de personne, le seul
hic c'est que faire une recherche sur un numéro de personne ben c'est
pas terrible lol
Donc j'ai voulu concaténé le nom de la personne et son numéro dans une
combobox que je charge dans le form_load, mais le problème, c'est que
je ne sais pas comment récupérer le numéro une fois concaténé : (
Si quelqu'un pouvait me dire un moyen de récupérer juste le numéro ou une solution plus simple, ca m'aiderait beaucoup
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 24 oct. 2005 à 19:31
Salut,
Met ton numéro en temps que Value quand tu définis les items et sert toi de SelectedValue pour récupérer le numéro de personne pour l'item sélectionné.
Je réexplique mon problème, si dans ma collection mesPersonnes il y a
deux noms identiques ===> plantage du prog, je n'affiche pas ce que
je veux...
Donc solution, faire une recherche sur un numéro qui est unique pour
chaque personne, mais faire une recherche sur un numéro ce n'est pas
terrible. Pour plus de clarté, je veux afficher le nom ET le numéro de
la personne, mais je ne sais pas comment je dois faire pour déconcaténé
les données que j'ai chargé dans ma combobox.
Est-ce que c'est plus clair la ???J'arrive pas mieux à expliquer,
désolé...L'année dernière on programmait en php4 (en 1ere année de BTS
IG), et cette année on passe direct aux objets avec le C#, pas facile
la transition :x
Si c'est pas possible, faites le moi savoir ca m'éviterait que je me complique la vie pour rien lol
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 25 oct. 2005 à 09:41
hum... as-tu lu la réponse que j'ai mis avant toi ???
dans ton combobox ne met pas de libelle mais uniquement des objets !
il te suffit de faire un override de la méthode ToString() pour afficher la concaténation de ce que tu veux. Et pour récupérer la valeur, tu fais un cast... y a pas plus simple !
re-exemple :
private void Fvisuclient_Load(object sender, System.EventArgs e)
{
int j=mesPersonnes.cardinal(); //On compte le nombre d'objets dans la collection mesPersonnes
for (int i=0; i<j ; i++)
{
unePersonne=(Personne)mesPersonnes.extraireObjet(i);//On extrait tous les objets de la collection
cb_nom.Items.Add(unePersonne); //Puis on les ajoute dans la combobox
}
}
et pour récupérer :
private void cb_nom_SelectedIndexChanged(object sender, System.EventArgs e)
{
if (cn_nom.SelectedIndex != -1)
unePersonne = (Personne)cb_nom.SelectedItem;
}
Ajoute aussi ces 2 lignes (dans ton constructeur par exemple), qui
binderont ton Combobox a ton ArrayList. Il n'y aura plus besoins de ta
boucle for qui charge ton combobox
lefreeman42
Messages postés28Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention15 juin 2006 25 oct. 2005 à 10:24
"struct Personne {
public string Nom;
public string Prenom;
public int Id;
...
public override string ToString() {
return this.Nom + " " + this.Prenom;
}
}
et donc tu fais ceci :
Personne pers = new Personne();
pers.Nom = "Truc";
pers.Prenom = "Bidule";
pers.Id = 500;
tonCombo.Items.Add(pers);
... etc...
et tu récupères comme ceci :
((Personne)tonCombo.SelectedItem).Id"
C'est ca que je comprend pas...Je met quoi a la place de bidule and co
, parce que je ne peux plus utiliser les méthodes de ma classe...
"il te suffit de faire un override de la méthode ToString() pour
afficher la concaténation de ce que tu veux. Et pour récupérer la
valeur, tu fais un cast... y a pas plus simple !"
Je sais pas ce que c'est qu'un cast et un override...Plus débutant que moi tu meurs...
lefreeman42
Messages postés28Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention15 juin 2006 25 oct. 2005 à 10:28
Ta solution parait nikel...mais je fais comment car je sais pas a
l'avance combien de personnes il y a...on les inscrit une par une a
l'aide d'une autre fenetre...C'est un truc de fou ce nous demande le
prof lol (pour mon niveau en tout cas...)