Problème avec delegate

[Résolu]
Signaler
Messages postés
38
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
2 septembre 2017
-
Messages postés
38
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
2 septembre 2017
-
Bonjour
J'ai un richTextBox et un bouton, je passe un nombre en parametre et s'il est divisible par 3 ou 5, "Divisible" s'écrit à chaque fois sur le richtextBox...C'est trés simple; mais je veux volontairement compliquer et utiliser un délégué...
Problème rien ne s'affiche ...Pourquoi?
Merci pour vos éventuelles réponses

using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        public class methodes
        {
            Form1 f = new Form1();
          public void methode1(string s,int nombre)
          {    
             if (nombre%3==0) f.richTextBox1.AppendText(s);    
          }

          public void methode2(string s,int nombre)
          {
            if (nombre%5==0) f.richTextBox1.AppendText(s);
          }      
        }

        public class evenement
        {
            public delegate void appel(string s, int nombre);
            public appel choix;  
        }

        private void button1_Click(object sender, EventArgs e)
        {
            evenement ev = new evenement();
            methodes m = new methodes();     
           ev.choix = m.methode1;
           ev.choix += m.methode2;
           ev.choix("Divisible",165);        
        }
        }            
        }

2 réponses

Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
10
dans ta classe methode, tu travailles dans un "new form1", donc pas dans le form1 du bouton, mais dans un deuxieme objet.

using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        public class methodes
        {
           Form1 f;
            public methodes(Form1 frm)
            {
                f = frm;
            }

          public void methode1(string s,int nombre)
          {    
             if (nombre%3==0) f.richTextBox1.AppendText(s);    
          }

          public void methode2(string s,int nombre)
          {
            if (nombre%5==0) f.richTextBox1.AppendText(s);
          }      
        }

        public class evenement
        {
            public delegate void appel(string s, int nombre);
            public appel choix;  
        }

        private void button1_Click(object sender, EventArgs e)
        {
            evenement ev = new evenement();
            methodes m = new methodes(this);     
           ev.choix = m.methode1;
           ev.choix += m.methode2;
           ev.choix("Divisible",165);        
        }
        }            
        }




un truc comme ca devrait fonctionner


BasicInstinct
Messages postés
38
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
2 septembre 2017
1
Merci