Méthode : probleme de type de parametres

Résolu
Signaler
Messages postés
29
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006
-
Messages postés
29
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006
-
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

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
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#
*/
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
>> 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);
Messages postés
29
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006

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é.