如何编写Visual Studio宏事件以获取用户键入的代码?

时间:2011-03-04 18:02:57

标签: visual-studio visual-studio-2010 macros visual-studio-macros

我正在寻找一种方法来编写一个宏事件来解析用户的代码 例如,当程序员编写一些特定代码时,此事件将解析代码行,如果匹配正则表达式,则会在活动文档中插入一些其他代码。
我怎么能得到孔线代码以及我应该使用哪个事件?

2 个答案:

答案 0 :(得分: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

创建并应用此宏:

  1. 转到菜单工具 - 宏 - 宏IDE ...
  2. 在Macros IDE类视图中导航到MyMacros - {}     MyMacros - EnvironmentEvents。打开(双击)EnvironmentEvents。
  3. 将此代码粘贴到模块内(就在End Module line之前)

答案 1 :(得分:-1)

Macros可以响应某些事件,但是,我不认为文本输入是其中之一,更好的方法可能是使用代码段 - 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