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

Windows Forms Discussion :

Fonction a appeler [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut Fonction a appeler
    Bonjour

    je fais 18 fois ce bout de code :

    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
     private void pbxL1C1_Paint(object sender, PaintEventArgs e)
            {
                Rectangle ee = new Rectangle(pbxL1C1.Left, pbxL1C1.Top, pbxL1C1.Width - iScreenWidth / iScreenWidth, pbxL1C1.Height - iScreenHeight / iScreenHeight);
                Pen pen = new Pen(Color.Black, 2);
                FileInfo fi = new FileInfo(News.strInfo1);
                if (fi.LastWriteTime > DateTime.Now.AddDays(-3))
                {
                    pen.Color = Color.Red;
                }
                else
                {
                    pen.Color = Color.Black;
                }
                using (pen)
                {
                    e.Graphics.DrawRectangle(pen, ee);
                }
            }
    Comment le mettre dans une fonction et modifier les endroits variables ? les choses que je met en gras seraient variables je m'explique : dans le new Rectangle il faut reprendre le nom du contrôle ou la fonction sera appelé et le new FIleInfo modifier la variable par info2, 3 etc jusqu'à 18 merci

    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
     private void pbxL1C1_Paint(object sender, PaintEventArgs e)
            {
                Rectangle ee = new Rectangle(pbxL1C1.Left, pbxL1C1.Top, pbxL1C1.Width - iScreenWidth / iScreenWidth, pbxL1C1.Height - iScreenHeight / iScreenHeight);
                Pen pen = new Pen(Color.Black, 2);
                FileInfo fi = new FileInfo(News.strInfo1);
                if (fi.LastWriteTime > DateTime.Now.AddDays(-3))
                {
                    pen.Color = Color.Red;
                }
                else
                {
                    pen.Color = Color.Black;
                }
                using (pen)
                {
                    e.Graphics.DrawRectangle(pen, ee);
                }
            }

  2. #2
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    ce quoi ta question ?

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Comment avoir le code à une seule fois et l'appeler mais en lui précisant de l'appliquer sur le bon contrôle

  4. #4
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    Ce quoi ton contrôle???
    normalement tu passe le contrôle en paramètre et ce tt :
    => a changer le controle par son vrai nom


    Code C# : 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
    public void ma_fonction(controle pbxL1C1, PaintEventArgs e )
    {
    Rectangle ee = new Rectangle(pbxL1C1.Left, pbxL1C1.Top, pbxL1C1.Width - iScreenWidth / iScreenWidth, pbxL1C1.Height - iScreenHeight / iScreenHeight);
                Pen pen = new Pen(Color.Black, 2);
                FileInfo fi = new FileInfo(News.strInfo1);
                if (fi.LastWriteTime > DateTime.Now.AddDays(-3))
                {
                    pen.Color = Color.Red;
                }
                else
                {
                    pen.Color = Color.Black;
                }
                using (pen)
                {
                    e.Graphics.DrawRectangle(pen, ee);
                }
    }

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Ok mais si j'ai 18 picturebox je dois faire 18 fonctions ? le but serait d'avoir 1 seule fonction qui fait le même code pour les 18 picturebox sans répeter 18 fois betement le code

  6. #6
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for(int i=0; i<18; i++)
    {
    var picturebox = new picturebox();
    //FOnction qui alimente les propriété de picturebox 
    ma_fonction(picturebox , e )
    }

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    Dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                InitializeComponent();
                this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pbxL1C1_Paint);
                this.pictureBox2.Paint += new System.Windows.Forms.PaintEventHandler(this.pbxL1C1_Paint);
                this.pictureBox3.Paint += new System.Windows.Forms.PaintEventHandler(this.pbxL1C1_Paint);
                [...]
    Dans l'absolu, il faudrait génériser le nom de la méthode, pour éviter qu'en lisant le code, on puisse croire que l'événement n'est lié qu'au contrôle pbxL1C1

    Edit : j'avais pas vu l'histoire du FileInfo, dans l'attente d'un prochain edit

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Pour info, dans un évènement (ici l'event Paint), le paramètre sender représente le control sur lequel se passe l'évènement. Il est de type Object. Il faut donc transtyper cet objet pour obtenir l'instance du control en question. Ici (Je suppose qu'il s'agit de PictureBox) :
    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
     
    private void pbx_Paint(object sender, PaintEventArgs e)
    {
        PictureBox pb = (PictureBox)sender;
        Rectangle ee = new Rectangle(pb.Left, pb.Top , pb.Width - iScreenWidth / iScreenWidth, pb .Height - iScreenHeight / iScreenHeight);
        Pen pen = new Pen(Color.Black, 2);
        FileInfo fi = new FileInfo(News.strInfo1);
        if (fi.LastWriteTime > DateTime.Now.AddDays(-3))
        {
            pen.Color = Color.Red;
        }
        else
        {
            pen.Color = Color.Black;
        }
        using (pen)
        {
            e.Graphics.DrawRectangle(pen, ee);
        }
    }
    Il faut abonner toutes les PictureBox à cet event comme l'indique casii.
    Concernant le FileInfo, tu peux stocker le nom du fichier dans la propriété Tag du picture box. C'est un Object, on peut donc mettre ce qu'on veut dedans.

    Une dernière chose (et pas des moindres) :
    Tu crées un instance de Pen à chaque évènement Paint de tes PictureBox. Cet objet est disposable (il implémente l'interface IDisposable). Il faut donc appeler la méthode Dispose lorsque tu ne l'utilises plus. Je te conseille plutôt de sortir la déclaration de pen de la proc, d'en créer qu'une seule instance une bonne fois pour toute et de n'utiliser que celle-ci. Tu "dispose ton crayon" en sortant de ton programme.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction Javascript appelant un fichier html
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/12/2006, 16h50
  2. Fonction mal appelée ?
    Par Dsphinx dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2006, 16h15
  3. Nom de la fonction d'appel
    Par heleneh dans le forum Langage
    Réponses: 7
    Dernier message: 24/06/2006, 14h11
  4. Réponses: 21
    Dernier message: 20/06/2006, 16h49
  5. Verifier formulaire - fonction non appelée
    Par nerick dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/12/2005, 17h44

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