如何捕获PowerPoint VSTO文本更改事件?

时间:2008-11-17 07:10:37

标签: vsto powerpoint

我正在开发一个PowerPoint C#VSTO加载项。我想能够在幻灯片的标题文本发生更改时捕获文本更改事件。

如何附加自定义事件处理程序,只要更改标题文本,它就会触发?

1 个答案:

答案 0 :(得分:3)

两件事:1)这是在VBA中,但应该可以轻松移植到C#和VSTO,2)“文本改变”的事情有点棘手。我可以把你带到“你是否在标题栏中” - 剩下的就更多了。它与查找原始状态与任何更改有关。可能是可行的,我还没有做到。

要在PPT VBA中挂钩选择更改,您需要一个类和一个模块。在课堂上,把这个:

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

将类命名为“clsPPTEvents”。然后在任何模块中,输入以下内容:

Public newPPTEvents As New clsPPTEvents
Sub StartEvents()
    Set newPPTEvents.PPTEvent = Application
End Sub
Sub EndEvents()
    Set newPPTEvents.PPTEvent = Nothing
    Set newPPTEvents = Nothing
End Sub

在StartEvents上按 F5 ,这将启用挂钩。按EndEvents上的F5将其禁用。