begin process at 2012 02 09 11:00:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Lien avec le Eventhandler perdu


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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 Excel - Enregistrement txt et caractères cyrilliques [ par ansizak ] Bonjour, Je dois, dans le cadre de mon travaille automatiser l'enregistrement de fichiers .xls en txt séparateur tabulation. Jusque là pas de problèm Problem de Controle invisible [ par sheppertizer ] Bonjour a tous voila je suis en train de tester plusieurs système de transparence sur une form , le probleme est que mes controles (ProgressBar et Co MDi probleme avec bool et erreur [ par bug31 ] Bonjour, Ca fait des heure et des heure que je chercheune solution qui marche pour mettre un bool true sur le form parent. Mon projet ce compose de Utiliser process avec psexec [ par theflayer ] Bonjour tous le monde, je suis entrain (j'essaye) de faire un petit programme pour gérer l'utilitaire "PsExec" via C# pour que sa soit plus sympa. J'a BEEP très ennuyeux [ par desperados27 ] Bonjour, J'arrive à la fin du développement de mon application, et j'en suis à éditer des raccourcis claviers. Tous fonctionnent... Mais un beep se f 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,836 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales