IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

(object sender, EventArgs e) ajout d'un autre paramètre ?


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 21
    Points
    21
    Par défaut (object sender, EventArgs e) ajout d'un autre paramètre ?
    Bonjour à tous,

    Je suis actuellement confronté à une problématique de type : passage de paramètre lors de l'appelle de procédure sur un évènement "CheckedChanged".

    Par défaut voici la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void chkBoxOne_CheckedChanged(object sender, EventArgs e)
    {
     
    }
    Je souhaiterai savoir s'il est possible d'ajouter un paramètre supplémentaire du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void chkBoxOne_CheckedChanged(object sender, EventArgs e, int id_salarie_fav)
    {
     
    }
    Ça à l'air de fonctionner mais mon vrai problème c'est plutôt comment appeler cette procédure ?

    J'ai essayé ceci mais ça ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CheckedChanged=chkBoxOne_CheckedChanged(,,1)
    Il me dit "Argument manquant". J'ai essayé "","" mais il me dit "Argument non valide" donc je suis un peu bloqué avec ce "sender" et ce "e"

    Si quelqu'un pouvait m'aider dans cette démarche je lui en serai très reconnaissant.

    Merci pour vos éventuelles réponses.
    Cordialement
    M0nk'

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonjour,

    les gestionnaires d'évènement doivent avoir une signature correspondante à l'évènement auxquels ils sont rattachés, donc tu ne pourra pas procéder comme tu le souhaites (et puis comment veux-tu que le checkbox sache quelle valeur passer à ce nouveau paramètre ?)

    Cordialement !
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Salut Sehnsucht,

    comment veux-tu que le checkbox sache quelle valeur passer à ce nouveau paramètre ?
    Dans ce que j'essayai de faire ce n'était pas la checkbox qui passait un paramètre, elle elle le recevait.


    Aurais-tu dans ce cas une piste qui pourrait m'aiguiller ?

    Je re-explique clairement mon problème :
    Lors du check (true ou false) d'une checkbox je souhaiterai exécuter une procédure mais j'ai besoin de récupérer l'id de la ligne que j'ai checké. Pour ça il faudrait que j'appel ma procédure CheckedChanged en passant un paramètre.
    En image : http://cjoint.com/12oc/BJfiTQ7m55W.htm

    Merci

  4. #4
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Il va falloir que tu stockes les données que tu veux quelque part, pour que la méthode CheckedChanged puisse y avoir accès.

    Une autre solution serait de faire un contrôle maison hérité de checkbox. Avec ça tu pourras faire ton propre EventArg qui peut contenir ce que tu veux.
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Le tableau que l'on voit, c'est construit dynamiquement ou à la main?
    C'est quel technologie? (Wpf, winform?Asp?).
    Si c'est fait à la main, tu peux toujours utiliser le Tag de la checkbox pour y ajouter ta valeur(ou bien l'objet parent pour avoir accés à plus de truc).
    Pour le récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int valeur=(int)((CheckBox)sender).Tag
    (tu peux rajouter des verifications de type pour plus de sécurité).

    En fait selon ce que tu utilises pour faire ton tableau tu peux avoir des solutions différentes, il faut plus de détails

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Bonjour à tous,

    C'est quel technologie? (Wpf, winform?Asp?)
    C#/ASP.NET/JavaScript(pour la mise ne forme)

    Chargement du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Liste_Donnees annuaire = new Liste_Donnees();
    annuaire.annuaire();
    for (int i = 0; i < annuaire.Dt.Rows.Count; i++)
    {
                    DataRow dr = annuaire.Dt.Rows[i];
                    HtmlTableRow tr = new HtmlTableRow();
                    this.AddTd(dr["Id_Personne"].ToString(), tr);
                    this.AddTd(dr["Nom"].ToString(), tr);
                    this.AddTd(dr["Prenom"].ToString(), tr);
                    this.AddTd(dr["Numero"].ToString(), tr);
     
                    HtmlTableCell td = new HtmlTableCell();
                    CheckBox chkBoxOne = new CheckBox();
                    chkBoxOne.ID = "chkOne_" + dr["Id_Personne"].ToString();
                    chkBoxOne.AutoPostBack = true;
                    chkBoxOne.EnableViewState = true;
                    chkBoxOne.CheckedChanged += new EventHandler(chkBoxOne_CheckedChanged);
                    td.Controls.Add(chkBoxOne);
                    tr.Cells.Add(td);
     
                    this.t_annuaire.Controls.Add(tr);
    }

  7. #7
    Membre habitué
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Points : 133
    Points
    133
    Par défaut
    Tu peux faire une class dérivée de EventArgs, c'est quelques lignes de plus à écrire mais ton code n'en sera que plus facile à maintenir.
    Dans l'événement OnChecked de ton checkbox, tu appelles ton événement personnalisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.OnSalarieChecked (this, new SalarieEventArgs (salaireID));

    Déclaration de ton évènement personnalisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
            /// <summary>
            /// Création d'une class dérivée de EventArgs
            /// </summary>
            public class SalarieEventArgs : EventArgs
            {
                public int id_salarie_fav = 0;
     
                /// <summary>
                /// Constructeur
                /// </summary>
                public SalarieEventArgs()
                {
                }
     
                /// <summary>
                /// Constructeur
                /// </summary>
                /// <param name="id_salarie_fav">ID salarié</param>
                public SalarieEventArgs(int id_salarie_fav)
                {
                    this.id_salarie_fav = id_salarie_fav;
     
                }
            }
     
            /// <summary>
            /// Création du delegate
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="args"></param>
            public delegate void OnSalarieCheckedDelegate(object sender, SalarieEventArgs args);
     
            /// <summary>
            /// Création de l'événement
            /// </summary>
            public event OnSalarieCheckedDelegate OnSalarieChecked;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    this.OnSalarieChecked += new OnSalarieCheckedDelegate(Form1_OnSalarieChecked);        
     
     
    void Form1_OnSalarieChecked(object sender, Form1.SalarieEventArgs args)
    {
      int id = args.id_salarie_fav ;
    }
    Nova Music Player, lecteur de musique pour win10
    http://novamusic.fpc-france.com

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Si il peut faire ca, c'est qu'il a pu récupérer l'ID lors du OnChecked ... Du coup ca sert plus à rien.

    ASP je connais pas vraiment et en regardant vite fait il n'y a pas de "Tag", désolé ...

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Et si tout simplement tu crées ton propre UserControl ?? dans lequel tu as une CheckBox et un je sais pas ... HiddenField ??
    Du côté de ton UserControl tu libères l'accès aux différentes Propriétés et en plus tu peux, par exemple, créer ton propre évènement avec ta propre signature de méthode ...

    En plus ce qui vachement bien avec cette solution, c'est que tu pourras réutiliser ton UserControl autant de fois que tu veux, l'améliorer, modifier le comportement, ajouter de l'Ajax .... sans avoir à modifier N fois ton code
    "Une belle citation est un diamant au doigt de l'homme d'esprit et un caillou dans la main d'un sot."
    Joseph Roux

Discussions similaires

  1. [Objective C] Accès à une variable d'un autre objet
    Par Bababilou dans le forum Objective-C
    Réponses: 2
    Dernier message: 24/07/2009, 16h30
  2. Identifier "object sender"
    Par koyot3 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/10/2008, 17h42
  3. ajout d'un autre Raid
    Par hicham106 dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 11/03/2008, 20h10
  4. object^ sender c++.net
    Par TrollTop dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 08/07/2007, 10h03
  5. valeur d'un champ de formulaire ajouté depuis une autre page
    Par manaboko dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/12/2005, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo