Как записать событие изменения текста PowerPoint VSTO? - PullRequest
2 голосов
/ 17 ноября 2008

Я разрабатываю надстройку PowerPoint C # VSTO. Я хочу иметь возможность фиксировать событие изменения текста всякий раз, когда изменяется текст заголовка слайда.

Как я могу прикрепить пользовательский обработчик событий, который будет срабатывать при изменении текста заголовка?

1 Ответ

3 голосов
/ 04 февраля 2010

Две вещи: 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

Нажмите F5 на StartEvents, и это активирует ловушку. Нажмите F5 на EndEvents, чтобы отключить его.

...