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 :

Sous C#, dans VS 2022: problème basique sur les évènements ?


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 111
    Points : 53
    Points
    53
    Par défaut Sous C#, dans VS 2022: problème basique sur les évènements ?
    Bonjour

    Un problème basique sur les évènements dans un programme WindForm en Visual Studio 2022 Entreprise

    J'avais délaissé le dev en C#; Aidez moi

    mon code:

    // première classe

    public partial class Form2 : Form
    {

    public EventHandler event_momo; // déclaration de l'évènement
    // déjà ici, dans debogage, "event_momo = null" mais de type EventHandler ????

    ....

    // plus loin, dans la méthode qui va déclencher l'évènement


    EventHandler eh = event_momo;

    if ( eh != null )

    { eh.Invoke(this, EventArgs.Empty); }
    ....
    }

    ........

    // seconde classe

    public partial class Form1 : Form
    {

    // pour abonner une méthode à l'évènement

    Form2 f2 = new Form2();

    f2.event_momo += Maj_fichier;
    ....

    }

    Évidemment, je suis ici parce qu'aucun évènement n'est déclenché.
    Je n'arrive pas à voir mon erreur.

    Dans le debogage de l'appli , je trouve toujours "event_momo" de type "EventHandler" mais de valeur toujours "= null" ( donc idem pour "eh").
    Lors de l'exécution de l'appli, le compilateur est sous silence ... mais aucun évènement n'est lancé.
    Pourquoi ???? Merci de votre aide.

    Dans cette appli plutôt simple, tous les évènements liés à des contrôles (genre click sur bouton ...) fonctionnent à merveille ....

    Molo

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 752
    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 : 2 752
    Points : 5 457
    Points
    5 457
    Par défaut
    Ce n'est pas ainsi que fonctionne un événement.
    Dans un fichier à part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    using System;
    namespace WindowsFormsApp15
    {
        public class PopoEventArgs : EventArgs
        {
        }
    }
    Dans Form2 :
    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
    using System;
    using System.Windows.Forms;
     
    namespace WindowsFormsApp15
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
     
            public event EventHandler<PopoEventArgs> Popo;
     
            private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                Popo?.Invoke(this, new PopoEventArgs());
            }
        }
    }
    Dans Form1 :
    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
    using System;
    using System.Windows.Forms;
     
    namespace WindowsFormsApp15
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                using (Form2 f = new Form2())
                {
                    f.Popo += OnPopo;
                    f.ShowDialog();
                }
            }
     
            public void OnPopo(object sender, PopoEventArgs e)
            {
                MessageBox.Show("Popo");
            }
        }
    }
    Edit : Simplifié l'appel dans FormClosing

Discussions similaires

  1. Problème basique sur les dates
    Par asirier dans le forum Word
    Réponses: 1
    Dernier message: 08/10/2008, 17h11
  2. Problèmes divers sur les tableaux
    Par AC88mm dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/03/2007, 20h00
  3. Question basique sur les tableaux
    Par valanagrid dans le forum C++
    Réponses: 8
    Dernier message: 08/11/2006, 15h47
  4. [Smarty] problème compréhension sur les tableaux
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 09/02/2006, 16h44

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