我正在寻找一种编写宏事件来解析用户代码的方法。
例如,当程序员编写一些特定代码时,此事件将解析代码行,如果匹配正则表达式将在活动文档上插入一些附加代码。
我如何获得孔线代码以及我应该使用哪个事件?
问问题
680 次
2 回答
2
您可以使用 TextDocumentKeyPressEvents.AfterKeyPress 事件。用户在文本编辑器中按下任意键后会触发以下宏。然后它获取当前行。此示例测试该行是否包含“hello”文本,如果是,则在消息框中显示该行。
Private Sub TextDocumentKeyPressEvents_AfterKeyPress(ByVal Keypress As String, _
ByVal Selection As EnvDTE.TextSelection, ByVal InStatementCompletion As Boolean) _
Handles TextDocumentKeyPressEvents.AfterKeyPress
Try
Dim line As String
Dim aPoint As EditPoint = Selection.ActivePoint.CreateEditPoint
Dim startPoint As EditPoint = aPoint.CreateEditPoint
startPoint.StartOfLine()
Dim endPoint As EditPoint = aPoint.CreateEditPoint
endPoint.EndOfLine()
line = startPoint.GetText(endPoint)
If line.Contains("hello") Then
MsgBox(line)
End If
Catch ex As Exception
End Try
End Sub
要创建和应用此宏:
- 转到菜单工具 - 宏 - 宏 IDE...
- 在宏 IDE 类视图中,导航到 MyMacros - {} MyMacros - EnvironmentEvents。打开(双击)EnvironmentEvents。
- 将此代码粘贴到模块中(就在 End Module 行之前)
于 2011-03-10T09:13:58.947 回答
-1
宏可以响应某些事件,但是,我不认为文本输入是其中之一,更好的方法可能是使用片段 - http://msdn.microsoft.com/en-us/library/ms165392( v=VS.100).aspx
它们将允许您定义关键字,然后将文本添加到编辑器中。一个很好的例子是属性片段;在您的编辑器中键入“prop”,然后按 Tab(在 C# 中两次,在 VB 中一次)进行调用。
以下是可用片段的更详细列表:http: //msdn.microsoft.com/en-us/library/z41h7fat (v=VS.100).aspx
于 2011-03-10T02:15:18.197 回答