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 :

Fonctions et procédures


Sujet :

C#

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 2
    Par défaut Fonctions et procédures
    Salut à tous. Je débute avec la programmation c# et j'écris un petit programme avec beaucoup de boutons de textbox et autres.
    En fonction d'un nombre saisi par l'utilisateur et du nombre de boutons déjà visible je dois afficher des boutons supplémentaires
    J'ai essayer de gérer ça avec des if même si c'est un peu lourd ( s'il y a plus simple veuillez m'aider)
    Maintenant ma question
    Je voudrais écrire une procédure qui se charge de ça
    Rendre visible des boutons en fonctions d'un nombre n
    Mais mes fonctions et procédures ne reconnaissent pas mes boutons
    Comment puis-je les passer en paramètres si c'est la solution

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 154
    Par défaut
    Montre nous comment tu as codé ta routine et on te suggèrera quelque améliorations

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 2
    Par défaut
    Une petite portion du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If (n ==3)
    {
     Button4.Visible=true;
     Button4.Text=Button3.Text;
     Button3.text=Button2.Text;
     Button2.text=Button1.text;
     Button1.text="autre";
     
     ButPlus1.Visible= false;
     ButPlus2.Visible= false;
     ButPlus3.Visible= false; 
    }
    Si n devient grand ça devient très vite difficile à gérer.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 154
    Par défaut
    Ce bout de code tout seul ne sert à rien.
    Il nous faut savoir dans quelle méthode il se trouve et dans quelle classe se trouve cette méthode, car à priori cette classe n'est pas celle de ton écran.

    Mais bon, là je tente de répondre à la question telle que tu l'as posée. Cela m'a tout l'air d'être la solution que tu as imaginé pour répondre à un problème plus large. Le mieux serait que tu nous expose le vrai problème plutôt que ce que tu as imaginé pour y répondre.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Par défaut
    En général nommer les composants quant tu fais du traitement avec énormément d'élément est une mauvaise idée

    Avec un N de 25/50/100 ou 1000 ta solution ne tiens plus

    Il faut passer par des collections (stackpanel/FlowLayoutPanel) et utiliser les indexes de tes boutons dans la collection

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut
    Citation Envoyé par ash.ice.loky Voir le message
    En général nommer les composants quant tu fais du traitement avec énormément d'élément est une mauvaise idée

    Avec un N de 25/50/100 ou 1000 ta solution ne tiens plus

    Il faut passer par des collections (stackpanel/FlowLayoutPanel) et utiliser les indexes de tes boutons dans la collection
    Pour ma curiosité avec une classe dédiée instanciable c'est pas possible ?

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
     
    /*
     usage CButton But0 = new (this,"Welcome"); 
     */
    namespace CustomItemButton
    {
        public class CButton : Button
        {
            private Form SrcForm;
            private Button But;
     
            //constructeur
            public CButton(Form SForm, string Text = "", 
                                    int PosH = 0, int PosV = 0 , 
                                    int LenV = 200, int LenH = 50, 
                                    string FontName = "Times New Roman", 
                                    float SizeFont = 16)
            {
                //ça miaule donc methode ? (Rendre le champ readonly):-> But = new Button();
                NewButton();
                SetForm(SForm);
                //default
                SrcForm.Controls.Add(But);
                But.BackColor = Color.FromArgb(0, 0, 0);
                But.ForeColor = Color.FromArgb(0, 255, 00);
                But.Text = Text;
                But.Font = new Font(FontName, SizeFont);
                But.FlatStyle = FlatStyle.Popup;
                But.Location = new Point(PosH, PosV);
                But.Height = LenH;
                But.Width = LenV;
                //association
                But.Click += new System.EventHandler(But_DoubleClick);
            }
            private void NewButton()
            {
                But = new Button();
            }
            private void SetForm(Form SForm)
            {
                SrcForm = SForm;
            }
            public override String Text
            {
                get { return But.Text; }
                set { But.Text = value; }
            }
     
            private void But_DoubleClick(Object sender, EventArgs e)
            {
                SrcForm.Text = But.Text;//a adapter
            }
        }
    }
    /* memo
        * public event EventHandler DoubleClick;
        * public event EventHandler ThresholdReached;
        *
    */
    Ensuite on fait une boucle et on stocke tout dans une liste/tableau ?
    On a donc une liste d'objet.

    ou je me gourre quelque part (je débute...) ?

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 154
    Par défaut
    Créer une classe héritant du bouton ne changera rien à ton problème initial.
    Et, ce n'est pas à ton bouton de se soucier de comment il va être placé sur l'écran.

    Encore une fois, pour résoudre la question telle que tu l'as posé :
    Dans quelle méthode et quelle classe se trouve le bout de code que tu as posté le 10 juin ?

    Mais je continue à affirmer que tu as un problème de conception quelque part;
    Et que la question que tu as posé est la solution que tu as imaginé mais qui n'est pas la bonne.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut
    Citation Envoyé par popo Voir le message
    Créer une classe héritant du bouton ne changera rien à ton problème initial.
    Et, ce n'est pas à ton bouton de se soucier de comment il va être placé sur l'écran.
    j'avoue que je te suis pas, ou veux tu en venir ?

    Pour moi il est obliger de savoir ou il va ce placer, tout comme la form peux lui dire ou ce placer. il y a donc une valeur par défaut. Autrement c' est modifiable aux moment ou la classe est appeler, c'est donc possible, coter bouton et coter form. Que veux tu de plus ??

    Encore une fois, pour résoudre la question telle que tu l'as posé :
    Dans quelle méthode et quelle classe se trouve le bout de code que tu as posté le 10 juin ?
    j'ai pas retrouver le poste de manière "certaine", et mélanger 2 post prête a confusion.

    Mais je continue à affirmer que tu as un problème de conception quelque part;
    Et que la question que tu as posé est la solution que tu as imaginé mais qui n'est pas la bonne.
    Admettons, que proposes -tu, ?
    La critique est un bon début mai avec rien de constructif pour "rediriger". Cela reste relatif sans plus.

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 154
    Par défaut
    Citation Envoyé par panthere noire Voir le message
    j'avoue que je te suis pas, ou veux tu en venir ?

    Pour moi il est obliger de savoir ou il va ce placer, tout comme la form peux lui dire ou ce placer. il y a donc une valeur par défaut. Autrement c' est modifiable aux moment ou la classe est appeler,
    Faux, le bouton fourni simplement une propriété Location de type Point qui contient un entier X et un entier Y.
    Mais le bouton n'a aucune idée de l'endroit où il va se placer et il n'a pas besoin de le savoir.
    C'est le conteneur du bouton qui va le placer.


    Citation Envoyé par panthere noire Voir le message
    c'est donc possible, coter bouton et coter form. Que veux tu de plus ??
    Ce n'est pas parce que quelque chose est possible que c'est une bonne idée de le faire.
    C'est un bouton, sa seul responsabilité est de répondre au click via l'évènement qu'il met à disposition.
    Ce que je veux c'est te faire comprendre pourquoi ce n'est pas une bonne idée.
    J'y viens.

    Citation Envoyé par panthere noire Voir le message
    private void But_DoubleClick(Object sender, EventArgs e)
    {
    SrcForm.Text = But.Text;//a adapter
    }
    Ce code est dans la classe de ton bouton.
    En faisant cela, tu lie fortement ton bouton à un objet de type Form.
    Ce qui t'empêche de le réutiliser ailleurs que dans un conteneur de type Form (genre dans un UserControl).
    Dans l'autre topic, c'est encore pire car en plus l'écran doit disposer d'une méthode StartStopTreadCleanDns pour que ton bouton fonctionne.
    Que vas-tu faire lorsque tu aura besoin de modifier autre chose sur ton écran ? tu vas refaire une classe DButton ? puis une EButton ? etc.

    Encore une fois, c'est un bouton, sa seul responsabilité est de répondre au click via l'évènement qu'il met à disposition.
    C'est à ton écran (ou a ton UserControl) de brancher un comportement sur cet l'évènement Click !

    Citation Envoyé par panthere noire Voir le message
    Admettons, que proposes -tu, ?
    La critique est un bon début mai avec rien de constructif pour "rediriger". Cela reste relatif sans plus.
    S'il avait fait une méthode à l'intérieur de la classe gérant son écran, ses boutons seraient connus.
    Je ne peux donc rien proposer tant que je ne saurais pas où est le bout de code qu'il a posté.
    Pour que ce soit constructif, il faut un échange.
    Or, il n'est pas revenu depuis.
    Je veux bien aider mais je ne suis pas devin.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut
    Merci pour ton approche me concernant, je vais voir pour faire autrement.

    c' est vrai qu'il ne viens plus par contre ce qui est pénible dans l'immédiat, a voir s'il reviens plus tard (période de vacance ?)

Discussions similaires

  1. Diff entre Fonctions et Procédures Stockées
    Par say dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 28/02/2007, 12h19
  2. Diff entre Fonctions et Procédures Stockées
    Par say dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/02/2007, 12h17
  3. Modéliser une routine (fonction ou procédure)
    Par koala01 dans le forum C++
    Réponses: 26
    Dernier message: 20/12/2006, 02h32
  4. Fonction ou procédure avec paramètres optionnels ?
    Par [Silk] dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2006, 13h55
  5. Réponses: 11
    Dernier message: 20/12/2005, 18h40

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