Accueil > Forum > > > > Lien avec le Eventhandler perdu
Lien avec le Eventhandler perdu
lundi 26 mai 2008 à 10:57:08 |
Lien avec le Eventhandler perdu

darb66
|
Bonjour à tous, J'ai développé un Addin pour PowerPoint 2007 et j'ai quelques soucis avec l'EventHandler des nouveaux boutons... Je m'explique: 1) Je crée une nouvelle bar d'outils avec un bouton de type popup Office.CommandBar menuBar = this.Application.CommandBars.Add("My Tools", Office.MsoBarPosition.msoBarTop, false, true); menuBar.Visible = true; Office.CommandBarPopup ButtonColor = (Office.CommandBarPopup)menuBar.Controls.Add(Office.MsoControlType.msoControlPopup, missing, missing, missing, true); ButtonColor.Caption = "Select Color"; ButtonColor.Visible = true;
2) J'ajoute dynamiquement des boutons pour ce-dernier en spécifiant la fonction lors d'un Click Office.CommandBarButton ButtonCurrentColor; for (int i = 0; i < COLORNAMES.GetLength(0); i++) { ButtonCurrentColor = (Office.CommandBarButton)ButtonColor.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true); ButtonCurrentColor.Style = Office.MsoButtonStyle.msoButtonIconAndCaption; ButtonCurrentColor.Caption = COLORNAMES[i, 0]; ButtonCurrentColor.Picture = vln_ImageConverter.Convert((System.Drawing.Bitmap)Resources.ResourceManager.GetObject(COLORNAMES[i, 1])); ButtonCurrentColor.Click += new Office._CommandBarButtonEvents_ClickEventHandler(ButtonColor_Click); }
3) La fonction "ButtonColor_Click" assigne la couleur au texte sélectionné... this.Application.ActiveWindow.Selection.TextRange.Font.Color.RGB = sColor;
Cela fonctionne parfaitement bien... sauf lorsque j'utilise d'abord un autre bouton - créé précédemment par le même Addin - qui ouvre une nouvelle fenêtre. Je n'arrive pas à expliquer pourquoi, suite aux lignes de code ci-dessous, mes EventHandler déclarés ci-dessus ne fonctionnent plus. Il ne se passe absolument rien... Form myForm = new Form(); myForm.Show();
Est-ce que quelqu'un pourrait m'aider? Merci d'avance pour votre collaboration 
|
|
mardi 27 mai 2008 à 09:52:20 |
Re : Lien avec le Eventhandler perdu

darb66
|
Réponse acceptée !
J'ai résolu le problème  Pour les personnes intéressées, voici le descriptif de la solution trouvée sur Google Group: Make sure you keep a reference to that button all the time. I had the same problem. Maybe the garbage collector decides to release the object at some point, because there is no reference to the button. I mean, if you create a button in a method, and you declare the button object in that method, after that you set an event handler and leave the method, the reference to the button goes out of scope. Because of setting the event, interop mechanism keeps a reference to the event handler for some time only. Maybe it is a good idea to define the button object public static somewhere.
1) J'ai donc créé dans ma classe une liste qui contiendra mes boutons private List<Office.CommandBarButton> ButtonColors;
2) Et j'ajoute mes boutons lors de leur création dans la boucle "for" (cf. Point 2 du précédent post) for (int i = 0; i < COLORNAMES.GetLength(0); i++) { ... ButtonColors.Add(ButtonCurrentColor); }
Cela a pour effet de toujours garder une référence sur les boutons créés. Le Garbage Collector ne supprimera donc plus mes Event OnClick...
|
|
Cette discussion est classée dans : office, true, missing, buttoncolor, buttoncurrentcolor
Répondre à ce message
Sujets en rapport avec ce message
Inserer une image dans un fichier Excel [ par Tuizi ]
Bonjour, Voila je viens de passer sous C# et donc j'ai un petit problème avec Excel, en effet sous VB.NET j'arrive à écrire dans une cellule ainsi qu'
Lister toutes les feuilles d'un classeur Excel [ par achleuhi ]
Bonjour tous le monde,Je cherche un moyen de lister toutes les feuilles d'un classeur Excel, je ne connais pas le noms des feuilles à l'avance je suis
VSTO Word 2003 [ par max12 ]
Bonjour,J'ai un soucis avec VSTO pour le développement d'un Add-Ins en C# framework 3.5 Visual Studio 2008 pour Microsoft Word 2003. Premierement, qua
Comment créer un fichier excel en winform? [ par vinzemuls ]
Bonjour,j'aimerai pouvoir créer un fichier excel d'une application winforms.Mais je ne trouve rien pour m'aider.J'ai apparament vu qu'il fallait ajout
PowerPoint Addin >> Niveau des puces pour créer un hierarchie [ par darb66 ]
Bonjour, je développe un Addin pour PowerPoint afin que les utilisateurs puisse séléctionner les styles que j'aurai au préalable défini dans mes fonct
Executer un process, sous un nom d'utilisateur spécifique, par un service windows [ par Rastafman ]
Bonjour à tous, Voilà je me retrouve face à un problème assez étrange. J'ai créé un service Windows qui doit lancer un process sous un utilisateur spé
excel et c#, problème d'interop [ par siilex ]
Bonjour,Je suis en train de développer un petit programme en C# utilisant les interop Excel pour ouvrir, lire, editer et enregistrer un fichier .xls.J
Fichiers Office : mot de passe ou pas [ par mattluna ]
Bonjour,je suis en train de développer un petit outil qui ouvre tous les docs présents dans un répertoire donné afin d'en extraire
Oû sont stockeés les parametres d'un fichier OFFICE?? [ par sghchafaa ]
Bonjour;Peut est je savoir oû sont stockeés les paramétres(taille,date de création,date de modification,contenu du fichier,format,polices utilisées,mi
imposer le printer dans printdialog [ par olibara ]
BonjourDepuis mon application, j'aimerais ouvrir le printdialog mais en proposant une autre imprimante que l'imprimante par défautEst-ce possible ?J'e
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|