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 :

Problème d'événement avec VSTO (word)


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 11
    Points
    11
    Par défaut Problème d'événement avec VSTO (word)
    Bonjour,

    J'ai un petit soucis avec VSTO.
    J'ai réalisé un plugin word qui contient un menu, qui ouvre une fenêtre lorsque l'on clique dessus.

    Je lance word, mon menu est bien présent, je le déplie, clique sur le sous menu, la fenêtre s'ouvre. Tout va bien.

    Maintenant, tout en gardant word ouvert, j'ouvre un autre document (ou en créé un nouveau).
    Le menu est toujours présent, mais quand je clique, rien ne se passe.

    Quand je retourne sur le document initial, le menu fonctionne.

    Mon problème est donc que mon menu ne fonctionne réellement qu'avec le document qui a ouvert word.
    Comment faire pour qu'il fonctionne avec plusieurs documents ouverts en même temps.
    J'ai l'impression que l'événement abonné au clic du bouton est perdu avec l'ouverture d'autres documents.

    Voici un code semblable à celui qui me pose problème :
    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
    67
    68
    69
    70
    71
    72
    73
     
    using System;
    using System.Windows.Forms;
    using Microsoft.VisualStudio.Tools.Applications.Runtime;
    using Word = Microsoft.Office.Interop.Word;
    using Office = Microsoft.Office.Core;
    using System.Collections.Generic;
     
    namespace TestPlugin
    {
        public partial class ThisAddIn
        {
            Office.CommandBar barreMenu;
            Office.CommandBarPopup menuTest;
            Office.CommandBarButton boutonMenuEnregistrer;
            Office._CommandBarButtonEvents_ClickEventHandler eventClick;
     
            private void ThisAddIn_Startup(object sender, System.EventArgs e)
            {
                InitMenu();
            }
     
            private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
            {
            }
     
            private void InitMenu()
            {
                barreMenu = (Office.CommandBar)Application.CommandBars.ActiveMenuBar;
     
                object tag = "menuTest";
                menuTest = (Office.CommandBarPopup)Application.CommandBars.ActiveMenuBar.FindControl(Office.MsoControlType.msoControlPopup, System.Type.Missing, tag, true, true);
     
                if (menuTest == null)
                {
                    int ComptageMenu = barreMenu.Controls.Count;
                    menuTest = (Office.CommandBarPopup)barreMenu.Controls.Add(Office.MsoControlType.msoControlPopup, missing, missing, ComptageMenu, false);
                    menuTest.Caption = "&Test";
                    menuTest.Tag = tag.ToString();
     
                    boutonMenuEnregistrer = (Office.CommandBarButton)menuTest.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, 1, false);
                    boutonMenuEnregistrer.Caption = "&Test !";
                    boutonMenuEnregistrer.FaceId = 3;
                }
                else
                {
                    boutonMenuEnregistrer = (Office.CommandBarButton)menuTest.Controls[1];
                }
     
                eventClick = new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(boutonMenuEnregistrer_Click);
                boutonMenuEnregistrer.Click += eventClick;
            }
     
            public void boutonMenuEnregistrer_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)
            {
                MessageBox.Show("hello");
            }
     
            #region Code généré par VSTO
     
            /// <summary>
            /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
            /// le contenu de cette méthode avec l'éditeur de code.
            /// </summary>
            private void InternalStartup()
            {
                this.Startup += new System.EventHandler(ThisAddIn_Startup);
                this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
            }
     
            #endregion
        }
    }

    Merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    Je me permet de remonter la discussion.
    Vraiment personne n'a d'idée ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    Bon, je pense que j'ai trouvé la solution à mon problème.
    Je la poste ici au cas où ça serve.

    Quand je renseigne la propriété Tag de mon bouton, ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutonMenuEnregistrer.Tag = "BoutonTest";
    Je peux switch de documents, et l'événement s'exécute bien à chaque fois.

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

Discussions similaires

  1. Problème de style avec automation Word
    Par athDev dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 20/04/2012, 21h16
  2. Réponses: 3
    Dernier message: 02/07/2009, 14h23
  3. Problème d'évènement avec TFrame
    Par rvzip64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/09/2007, 12h43
  4. problème de variable avec événement
    Par seb-oulba dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/09/2006, 17h16

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