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 :

Communication entre 2 classes


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 38
    Par défaut Communication entre 2 classes
    Bonjour,
    J'essaie de faire un add-in sur PowerPoint et j'ai un problème de communication entre 2 classes


    Ma classe ThisAddIn une autre classe myUserControl1 qui va ajouter un panneau à ppt et un bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public partial class ThisAddIn
    {
            private MyUserControl myUserControl1;
     
            private void ThisAddIn_Startup(object sender, System.EventArgs e)
            {
            ...
            }
            private void AddSlide()
            {
             Slide slide = this.Application.ActivePresentation.Slides.Add(this.Application.ActivePresentation.Slides.Count + 1, PpSlideLayout.ppLayoutChart)
             ...
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public partial class MyUserControl : UserControl
    {
             private void buttonAddSlide_Click(object sender, EventArgs e)
            {
             ...
    Quand je clique sur le bouton, j'active la fonction AddSlide_Click de la classe MyUserControl1 et je voudrais que cela soit passé à la classe MyTestAddin pour lancer la fonction AddSlide().
    Comment faire pour faire communiquer ces 2 classes ?
    Merci

  2. #2
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Salut,

    Il faut que tu ai une référence de ThisAddIn dans ton MyUserControl et que tu change la portée de la méthode AddSlide.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 38
    Par défaut
    Tu veux dire en utilisant des namespace et en mettant la methode AddSlide en public ?

    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
    using name2
    namespace name1
    {
       public partial class ThisAddIn
       {
            private MyUserControl myUserControl1;
     
            private void ThisAddIn_Startup(object sender, System.EventArgs e)
            {
            ...
            }
            public void AddSlide()
            {
             Slide slide = this.Application.ActivePresentation.Slides.Add(this.Application.ActivePresentation.Slides.Count + 1, PpSlideLayout.ppLayoutChart)
             ...
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    using name1
    namespace name2
    {
       public partial class MyUserControl : UserControl
       {
             private void buttonAddSlide_Click(object sender, EventArgs e)
            {
             ...

  4. #4
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Citation Envoyé par droledenm Voir le message
    Tu veux dire en utilisant des namespace
    Nop, plutôt un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       public partial class MyUserControl : UserControl
       {
             private ThisAddIn thisAddIn;
       }
    Cela te permettra :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void buttonAddSlide_Click(object sender, EventArgs e)
    {
          thisAddIn.AddSlide();
    }
    Citation Envoyé par droledenm Voir le message
    en mettant la methode AddSlide en public ?
    Oui. Si tu laisse ta méthode en private, seul les méthodes de ta classe pourront l’appeler. Si tu n'es pas encore trop à l'aise avec les notions de public, private tout ca, le mieux, c'est que tu mettes toutes tes méthodes en public et toutes tes propriétés en private avec des accesseurs pour y'a accéder. Le temps que la notion rentre

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 38
    Par défaut
    Merci, je comprends

    J'ai essayé ce que tu m'as proposé et j'ai l'erreur:
    System.NullReferenceException: 'La référence d'objet n'est pas définie à une instance d'un objet.'
    thisAddIn was null.
    Là avec le code j'appelle une instance de la classe ThisAddIn, mais je ne l'ai pas liée cette instance à l'objet que je manipule - c'est bien ça ?
    Si oui, comment faire pour les associer ?

  6. #6
    Membre émérite Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Par défaut
    Effectivement, il te faut une instance derrière thisAddIn. Et pas n'importe laquelle vu le contexte. Tu peux opérer de plusieurs façons. Soit créer des accesseurs pour ta propriété thisAddIn, soit passer une instance dans le constructeur de ton user control.

    Petite question quand même au passage : Pourquoi des classes partielles ?

    Edit :
    Là avec le code j'appelle une instance de la classe ThisAddIn, mais je ne l'ai pas liée cette instance à l'objet que je manipule - c'est bien ça ?
    J'ai lu de travers ce que tu avais marqué. Avec ce code, tu veux utiliser l'instance qui se cache derrière thisAddIn. Sauf qu'il y'en a pas. Mais effectivement, il faut que tu "lies" thisAddIn à l'instance de l'objet que tu manipule.

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

Discussions similaires

  1. problème de communication entre mes classes
    Par emiliekun dans le forum ActionScript 3
    Réponses: 13
    Dernier message: 19/08/2009, 14h10
  2. communication entre les classes
    Par sara_qt dans le forum Qt
    Réponses: 0
    Dernier message: 11/04/2009, 20h11
  3. Communication entre une classe et un thread
    Par cs_ntd dans le forum C#
    Réponses: 2
    Dernier message: 24/10/2008, 10h49
  4. Communication entre les classes
    Par jagboys dans le forum MFC
    Réponses: 6
    Dernier message: 20/06/2006, 06h32
  5. Réponses: 3
    Dernier message: 22/11/2005, 11h12

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