Méthode : probleme de type de parametres

Résolu
cs_shoka Messages postés 29 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 21 février 2006 - 3 févr. 2006 à 12:12
cs_shoka Messages postés 29 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 21 février 2006 - 3 févr. 2006 à 12:39
Bonjour tout le monde !


Dans une application à but statistique, j'ai une form contenant plusieurs labels, indiquant une répartition de personnes, divisés en deux catégories :


Pour chaque élément (sexe, age, profession), un des deux labels affiche la valeur numérique,
L'autre affiche le pourcentage de cette valeur.


Par exemple j'ai un groupe Tranche d'age. Dans ce groupe j'ai 6 labels (en fait 3 couples de labels) :


1 label affichant le nombre de personnes entre 18 et 25 ans,
1 autre affichant le pourcentage de personnes entre 18 et 25 ans,
1 troisième affichant le nb de personnes entre 26 et 34 ans,
1 quatrième affichant le % de personnes entre 26 et 34 ans,
1 autre affichant le nb de personnes ayant plus de 35 ans,
1 dernier affichant le % de personnes ayant plus de 35 ans.

et ainsi de suite pour toutes les éléments.


Pour tous les labels affichant les nombres effectifs, j'ai une simple requete sur ma BD. Par contre, j'aimerais pour les labels "pourcent" faire une méthode qui les remplirait automatiquement. Ca m'éviterait de me taper 200 lignes de calcul manuel . Je passerais donc en paramètre les labels "pourcent" et "nombre".

Ma méthode serait simple :
{
if ([texte du label "nombre"] == "0")
[texte du label "pourcent"] = "0";
else
[texte du label "pourcent"] = (100 * (Convert.ToSingle([texte du label "nombre"])) / Convert.ToSingle(this.lResNbInscrits.Text)).ToString().Substring(0,4);
}

notes : this.lResNbInscrits désigne le nombre total de personnes;
le Substring sert à faire en sorte de n'afficher que 3 chiffres significatifs (+ la virgule);
je suis obligé de le cas "== 0" à part, car dans ce cas le substring ne marche pas.

Mon problème est que je ne sais pas du tout comment passer un objet label en paramètre.. j'ai essayé avec des pointeurs, mais je n'y connais presque rien et ça s'est solvé en échec.

Par avance merci

3 réponses

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
3 févr. 2006 à 12:25
Salut,

private void MaMethode(Label labelNombre, Label labelPourcent)
{
if (labelNombre.Text == "0")
labelPourcent.Text = "0";
else
labelPourcent.Text = (100 * (Convert.ToSingle(labelNombre.Text)) / Convert.ToSingle(this.lResNbInscrits.Text)).ToString().Substring(0,4);
}

?

/*
coq
MVP Visual C#
*/
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
3 févr. 2006 à 12:30
>> le Substring sert à faire en sorte de n'afficher que 3 chiffres significatifs (+ la virgule);
>> je suis obligé de le cas "== 0" à part, car dans ce cas le substring ne marche pas.

A la place du substring, tu peux utiliser ca :
monNombreAVirgule.ToString("0.000");

>> Mon problème est que je ne sais pas du tout comment passer un objet label en paramètre..

Pourtant ce n'est pas compliqué :
- Une méthode prenant un label en paramètre (si cette méthode n'est pas dans ta form, il faut eventuellement ajouter un "using System.Windows.Forms") :
void MaMethod(Label label)
{

}

- Pour l'appeler :
Methode(label);
3
cs_shoka Messages postés 29 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 21 février 2006
3 févr. 2006 à 12:39
OMG merci beaucoup, je me prenais la tête vraiment pour rien..

Merci aussi pour le ToString(0.000) je n'y aurais jamais pensé.
0