Comment capturer un événement PowerPoint VSTO Text Changed?
-
08-07-2019 - |
Question
Je développe un complément PowerPoint C # VSTO. Je veux pouvoir capturer un événement de texte modifié chaque fois que le texte du titre d'une diapositive est modifié.
Comment puis-je attacher un gestionnaire d'événements personnalisé qui se déclenchera chaque fois que le texte du titre sera modifié?
La solution
Deux choses: 1) cela est en VBA, mais devrait être facilement portable en C # et VSTO, 2) Le "texte modifié" la chose est un peu délicate. Je peux vous obtenir aussi loin que "vous êtes dans une zone de titre". - le reste est plus trival. Cela a à voir avec la recherche de l'état d'origine par rapport à tout changement. Probablement faisable, je ne l'ai tout simplement pas fait.
Pour accrocher un changement de sélection dans VBA PPT, vous aurez besoin d’une classe et d’un module. Dans la classe, mettez ceci:
Public WithEvents PPTEvent As Application
Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
With Sel
If .Type = ppSelectionText Then
Dim sh As Shape: Set sh = .ShapeRange(1)
If sh.Type = msoPlaceholder Then
originalText = sh.TextFrame.Text
Dim placeHolderType As Integer
placeHolderType = sh.PlaceholderFormat.Type
If placeHolderType = ppPlaceholderTitle Then
MsgBox "this is a title placeholder"
End If
End If
End If
End With
End Sub
Nommez la classe "clsPPTEvents". Ensuite, dans n'importe quel module, mettez ce qui suit:
Public newPPTEvents As New clsPPTEvents
Sub StartEvents()
Set newPPTEvents.PPTEvent = Application
End Sub
Sub EndEvents()
Set newPPTEvents.PPTEvent = Nothing
Set newPPTEvents = Nothing
End Sub
Appuyez sur F5 sur les événements de démarrage (StartEvents) pour activer le raccordement. Appuyez sur F5 sur les EndEvents pour le désactiver.