【问题标题】:How to Write a Visual Studio Macro Event to get user's typed Code?如何编写 Visual Studio 宏事件来获取用户输入的代码?
【发布时间】:2011-03-04 18:02:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用 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. 在宏 IDE 类视图中导航到 MyMacros - {} MyMacros - 环境事件。打开(双击)EnvironmentEvents。
    3. 将此代码粘贴到模块内(就在 End Module 行之前)

    【讨论】:

      【解决方案2】:

      宏可以响应某些事件,但是,我不认为文本输入是其中之一,更好的方法可能是使用 sn-ps - http://msdn.microsoft.com/en-us/library/ms165392(v=VS.100).aspx

      它们将允许您定义关键字,然后将文本添加到编辑器中。 一个很好的例子是属性 sn-p;在您的编辑器中键入“prop”,然后按 Tab(在 C# 中两次,在 VB 中一次)进行调用。

      这里是可用 sn-ps 的更详细列表: http://msdn.microsoft.com/en-us/library/z41h7fat(v=VS.100).aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多