PowerPoint C# VSTO アドインを開発しています。スライドのタイトル テキストが変更されるたびに、テキスト変更イベントをキャプチャできるようにしたいと考えています。
タイトル テキストが変更されるたびに起動するカスタム イベント ハンドラーをアタッチするにはどうすればよいですか?
PowerPoint C# VSTO アドインを開発しています。スライドのタイトル テキストが変更されるたびに、テキスト変更イベントをキャプチャできるようにしたいと考えています。
タイトル テキストが変更されるたびに起動するカスタム イベント ハンドラーをアタッチするにはどうすればよいですか?
2 つのこと: 1) これは VBA ですが、C# と VSTO に簡単に移植できる必要があります。2) 「テキストの変更」は少しトリッキーです。「あなたはタイトルボックスにいますか」というところまであなたを得ることができます - 残りはもっと些細なことです。これは、元の状態と変更を見つけることに関係しています。おそらく実行可能です、私はそれをやったことがありません。
PPT VBA で選択の変更をフックするには、1 つのクラスと 1 つのモジュールが必要です。クラスで、これを入れます:
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
F5StartEvents を押すと、フックが有効になります。EndEvents で F5 を押して無効にします。