Problème avec delegate

Résolu
mecyber25 Messages postés 38 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 2 septembre 2017 - 13 juin 2012 à 14:06
mecyber25 Messages postés 38 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 2 septembre 2017 - 13 juin 2012 à 15:35
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

BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
13 juin 2012 à 15:12
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
3
mecyber25 Messages postés 38 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 2 septembre 2017 1
13 juin 2012 à 15:35
Merci
0
Rejoignez-nous