vs2003中宏的应用:快速找页面、多行查找

1、快速找页面:
None.gif Imports EnvDTE
Imports System.Diagnostics
Imports System.Windows.Forms
Imports System.Threading

Public Module QuickFindPage
    Dim ClipString As String
    Sub QuickFindPage()
        '// take whatever is on the clipboard and save it to an xml file
        '// intended for cut & paste from QueryAnalyzer
        Dim ClipBoardThread As System.Threading.Thread = New System.Threading.Thread(AddressOf getClipString_core)
        With ClipBoardThread
            .ApartmentState = ApartmentState.STA
            .IsBackground = True
            .Start()
            '-- Wait for copy to happen
            .Join()
        End With
        ClipBoardThread = Nothing
        ClipString = Replace(ClipString, "/", "\")
        If ClipString <> "" Then
            If System.IO.File.Exists(ClipString) Then
                DTE.ItemOperations.OpenFile(ClipString)
            Else
                Dim posControl = InStr(ClipString, ".ascx")
                Dim posControl2 = InStr(ClipString, ".aspx")
                If (posControl <> 0) Then
                    Dim ClipString1 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\CO\Control\" & ClipString
                    Dim ClipString2 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\PO\Control\" & ClipString
                    Dim ClipString3 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\IV\Control\" & ClipString
                    Dim ClipString4 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\IN\Control\" & ClipString
                    Dim ClipString5 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\SH\Control\" & ClipString
                    If System.IO.File.Exists(ClipString1) Then
                        DTE.ItemOperations.OpenFile(ClipString1)
                    ElseIf System.IO.File.Exists(ClipString2) Then
                        DTE.ItemOperations.OpenFile(ClipString2)
                    ElseIf System.IO.File.Exists(ClipString3) Then
                        DTE.ItemOperations.OpenFile(ClipString3)
                    ElseIf System.IO.File.Exists(ClipString4) Then
                        DTE.ItemOperations.OpenFile(ClipString4)
                    ElseIf System.IO.File.Exists(ClipString5) Then
                        DTE.ItemOperations.OpenFile(ClipString5)
                    Else
                        MessageBox.Show("Can not find the file !")
                    End If
                ElseIf (posControl2 <> 0) Then
                    Dim ClipString1 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\CO\Page\" & ClipString
                    Dim ClipString2 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\PO\Page\" & ClipString
                    Dim ClipString3 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\IV\Page\" & ClipString
                    Dim ClipString4 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\IN\Page\" & ClipString
                    Dim ClipString5 = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\SH\Page\" & ClipString
                    If System.IO.File.Exists(ClipString1) Then
                        DTE.ItemOperations.OpenFile(ClipString1)
                    ElseIf System.IO.File.Exists(ClipString2) Then
                        DTE.ItemOperations.OpenFile(ClipString2)
                    ElseIf System.IO.File.Exists(ClipString3) Then
                        DTE.ItemOperations.OpenFile(ClipString3)
                    ElseIf System.IO.File.Exists(ClipString4) Then
                        DTE.ItemOperations.OpenFile(ClipString4)
                    ElseIf System.IO.File.Exists(ClipString5) Then
                        DTE.ItemOperations.OpenFile(ClipString5)
                    Else
                        MessageBox.Show("Can not find the file !")
                    End If
                Else
                    '虚拟目录名()
                    Dim VirtualName = "Rhombus2_YEA"
                    Dim pos = InStr(ClipString, "\" & VirtualName & "\")
                    If (pos <> 0) Then
                        ClipString = Right(ClipString, Len(ClipString) - pos - Len("\" & VirtualName & "\") + 1)
                    End If
                    pos = InStr(ClipString, "?")
                    If (pos <> 0) Then
                        ClipString = Left(ClipString, pos - 1)
                    End If
                    '组合成正确的物理路径
                    ClipString = "D:\Rhombus2\2-Software Development\4-Software Implementation\2-Source Files\Source DEV\RhombusSolution\Rhombus2\" & ClipString
                    If System.IO.File.Exists(ClipString) Then
                        DTE.ItemOperations.OpenFile(ClipString)
                    Else
                        MessageBox.Show("Can not find the file !")
                    End If
                End If
            End If
        End If
    End Sub
    Sub getClipString_core()
        ClipString = Clipboard.GetDataObject().GetData(System.Windows.Forms.DataFormats.StringFormat)
    End Sub
End Module


2、多行查找:
None.gif
None.gifImports EnvDTE
None.gifImports System.Diagnostics
None.gifPublic Module MultilineSearch
None.gif    Sub MultilineSearchReplace()
None.gif        Dim sf As New MultilineSearchForm
None.gif        sf.ShowDialog()
None.gif        If sf.result 
<>  FindReplaceKind.none Then
None.gif            
'  temporarily disable Tools - Options -
None.gif
             '  Environment - Documents - Initialize Find text from editor
None.gif
            Dim oldFindInit As Boolean
None.gif            Try
None.gif                Dim props As EnvDTE.Properties
None.gif                props 
=  DTE.Properties( " Environment " " Documents " )
None.gif                Dim prop As EnvDTE.Property 
=  props.Item( " FindReplaceInitializeFromEditor " )
None.gif                oldFindInit 
=  prop.Value
None.gif                prop.Value 
=  False
None.gif            Catch ex As System.Exception
None.gif            End Try
None.gif            DTE.Find.PatternSyntax 
=  vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
None.gif            DTE.Find.FindWhat 
=  sf.findText
None.gif            DTE.Find.ReplaceWith 
=  sf.replaceText
None.gif            Select Case sf.result
None.gif                Case FindReplaceKind.find
None.gif                    DTE.ExecuteCommand(
" Edit.Find " )
None.gif                Case FindReplaceKind.findInFiles
None.gif                    DTE.ExecuteCommand(
" Edit.FindinFiles " )
None.gif                Case FindReplaceKind.replace
None.gif                    DTE.ExecuteCommand(
" Edit.Replace " )
None.gif                Case FindReplaceKind.replaceInFiles
None.gif                    DTE.ExecuteCommand(
" Edit.ReplaceinFiles " )
None.gif                Case Else
None.gif            End Select
None.gif            
'  restore Tools - Options -
None.gif
             '  Environment - Documents - Initialize Find text from editor
None.gif
            Try
None.gif                Dim props As EnvDTE.Properties
None.gif                props 
=  DTE.Properties( " Environment " " Documents " )
None.gif                Dim prop As EnvDTE.Property 
=  props.Item( " FindReplaceInitializeFromEditor " )
None.gif                prop.Value 
=  oldFindInit
None.gif            Catch ex As System.Exception
None.gif            End Try
None.gif        End If
None.gif    End Sub
None.gifEnd Module
None.gif
''' <summary>Types of find/replace operations.</summary>
None.gif
Public Enum FindReplaceKind
None.gif    
''' <summary>Find</summary>
None.gif
    find
None.gif    
''' <summary>Find In Files</summary>
None.gif
    findInFiles
None.gif    
''' <summary>Replace</summary>
None.gif
    replace
None.gif    
''' <summary>Replace in Files</summary>
None.gif
    replaceInFiles
None.gif    
''' <summary>None. Cancel was pressed.</summary>
None.gif
    none
None.gifEnd Enum
None.gifPublic Class MultilineSearchForm
None.gif    Inherits System.Windows.Forms.Form
None.gif#Region 
"  Windows Form Designer generated code  "
None.gif    Public Sub New()
None.gif        MyBase.New()
None.gif        
' This call is required by the Windows Form Designer.
None.gif
        InitializeComponent()
None.gif        
' Add any initialization after the InitializeComponent() call
None.gif
    End Sub
None.gif    
' Form overrides dispose to clean up the component list.
None.gif
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
None.gif        If disposing Then
None.gif            If Not (components Is Nothing) Then
None.gif                components.Dispose()
None.gif            End If
None.gif        End If
None.gif        MyBase.Dispose(disposing)
None.gif    End Sub
None.gif    
' Required by the Windows Form Designer
None.gif
    Private components As System.ComponentModel.IContainer
None.gif    
' NOTE: The following procedure is required by the Windows Form Designer
None.gif
     ' It can be modified using the Windows Form Designer.  
None.gif
     ' Do not modify it using the code editor.
None.gif
    Friend WithEvents FindBox As System.Windows.Forms.TextBox
None.gif    Friend WithEvents Label1 As System.Windows.Forms.Label
None.gif    Friend WithEvents Label2 As System.Windows.Forms.Label
None.gif    Friend WithEvents ReplaceBox As System.Windows.Forms.TextBox
None.gif    Friend WithEvents FindBtn As System.Windows.Forms.Button
None.gif    Friend WithEvents FindInFilesBtn As System.Windows.Forms.Button
None.gif    Friend WithEvents ReplaceBtn As System.Windows.Forms.Button
None.gif    Friend WithEvents ReplaceInFilesBtn As System.Windows.Forms.Button
None.gif    Friend WithEvents CancelBtn As System.Windows.Forms.Button
None.gif    
< System.Diagnostics.DebuggerStepThrough() >  Private Sub InitializeComponent()
None.gif        Me.FindBox 
=  New System.Windows.Forms.TextBox
None.gif        Me.Label1 
=  New System.Windows.Forms.Label
None.gif        Me.Label2 
=  New System.Windows.Forms.Label
None.gif        Me.ReplaceBox 
=  New System.Windows.Forms.TextBox
None.gif        Me.FindBtn 
=  New System.Windows.Forms.Button
None.gif        Me.FindInFilesBtn 
=  New System.Windows.Forms.Button
None.gif        Me.ReplaceBtn 
=  New System.Windows.Forms.Button
None.gif        Me.ReplaceInFilesBtn 
=  New System.Windows.Forms.Button
None.gif        Me.CancelBtn 
=  New System.Windows.Forms.Button
None.gif        Me.SuspendLayout()
None.gif        
'
None.gif
         ' FindBox
None.gif
         '
None.gif
        Me.FindBox.Location  =  New System.Drawing.Point( 16 24 )
None.gif        Me.FindBox.Multiline 
=  True
None.gif        Me.FindBox.Name 
=   " FindBox "
None.gif        Me.FindBox.ScrollBars 
=  System.Windows.Forms.ScrollBars.Both
None.gif        Me.FindBox.Size 
=  New System.Drawing.Size( 400 80 )
None.gif        Me.FindBox.TabIndex 
=   0
None.gif        Me.FindBox.Text 
=   ""
None.gif        
'
None.gif
         ' Label1
None.gif
         '
None.gif
        Me.Label1.Location  =  New System.Drawing.Point( 16 8 )
None.gif        Me.Label1.Name 
=   " Label1 "
None.gif        Me.Label1.Size 
=  New System.Drawing.Size( 160 16 )
None.gif        Me.Label1.TabIndex 
=   2
None.gif        Me.Label1.Text 
=   " Find what: "
None.gif        
'
None.gif
         ' Label2
None.gif
         '
None.gif
        Me.Label2.Location  =  New System.Drawing.Point( 16 112 )
None.gif        Me.Label2.Name 
=   " Label2 "
None.gif        Me.Label2.Size 
=  New System.Drawing.Size( 160 16 )
None.gif        Me.Label2.TabIndex 
=   4
None.gif        Me.Label2.Text 
=   " Replace with: "
None.gif        
'
None.gif
         ' ReplaceBox
None.gif
         '
None.gif
        Me.ReplaceBox.Location  =  New System.Drawing.Point( 16 128 )
None.gif        Me.ReplaceBox.Multiline 
=  True
None.gif        Me.ReplaceBox.Name 
=   " ReplaceBox "
None.gif        Me.ReplaceBox.ScrollBars 
=  System.Windows.Forms.ScrollBars.Both
None.gif        Me.ReplaceBox.Size 
=  New System.Drawing.Size( 400 80 )
None.gif        Me.ReplaceBox.TabIndex 
=   3
None.gif        Me.ReplaceBox.Text 
=   ""
None.gif        
'
None.gif
         ' FindBtn
None.gif
         '
None.gif
        Me.FindBtn.Location  =  New System.Drawing.Point( 16 232 )
None.gif        Me.FindBtn.Name 
=   " FindBtn "
None.gif        Me.FindBtn.Size 
=  New System.Drawing.Size( 80 24 )
None.gif        Me.FindBtn.TabIndex 
=   5
None.gif        Me.FindBtn.Text 
=   " Find>> "
None.gif        
'
None.gif
         ' FindInFilesBtn
None.gif
         '
None.gif
        Me.FindInFilesBtn.Location  =  New System.Drawing.Point( 104 232 )
None.gif        Me.FindInFilesBtn.Name 
=   " FindInFilesBtn "
None.gif        Me.FindInFilesBtn.Size 
=  New System.Drawing.Size( 96 24 )
None.gif        Me.FindInFilesBtn.TabIndex 
=   6
None.gif        Me.FindInFilesBtn.Text 
=   " Find in Files>> "
None.gif        
'
None.gif
         ' ReplaceBtn
None.gif
         '
None.gif
        Me.ReplaceBtn.Location  =  New System.Drawing.Point( 216 232 )
None.gif        Me.ReplaceBtn.Name 
=   " ReplaceBtn "
None.gif        Me.ReplaceBtn.Size 
=  New System.Drawing.Size( 80 24 )
None.gif        Me.ReplaceBtn.TabIndex 
=   7
None.gif        Me.ReplaceBtn.Text 
=   " Replace>> "
None.gif        
'
None.gif
         ' ReplaceInFilesBtn
None.gif
         '
None.gif
        Me.ReplaceInFilesBtn.Location  =  New System.Drawing.Point( 304 232 )
None.gif        Me.ReplaceInFilesBtn.Name 
=   " ReplaceInFilesBtn "
None.gif        Me.ReplaceInFilesBtn.Size 
=  New System.Drawing.Size( 112 24 )
None.gif        Me.ReplaceInFilesBtn.TabIndex 
=   8
None.gif        Me.ReplaceInFilesBtn.Text 
=   " Replace in Files>> "
None.gif        
'
None.gif
         ' CancelBtn
None.gif
         '
None.gif
        Me.CancelBtn.DialogResult  =  System.Windows.Forms.DialogResult.Cancel
None.gif        Me.CancelBtn.Location 
=  New System.Drawing.Point( 168 272 )
None.gif        Me.CancelBtn.Name 
=   " CancelBtn "
None.gif        Me.CancelBtn.Size 
=  New System.Drawing.Size( 80 24 )
None.gif        Me.CancelBtn.TabIndex 
=   9
None.gif        Me.CancelBtn.Text 
=   " Cancel "
None.gif        
'
None.gif
         ' MultilineSearchForm
None.gif
         '
None.gif
        Me.AutoScaleBaseSize  =  New System.Drawing.Size( 5 13 )
None.gif        Me.CancelButton 
=  Me.CancelBtn
None.gif        Me.ClientSize 
=  New System.Drawing.Size( 432 310 )
None.gif        Me.Controls.Add(Me.CancelBtn)
None.gif        Me.Controls.Add(Me.ReplaceInFilesBtn)
None.gif        Me.Controls.Add(Me.ReplaceBtn)
None.gif        Me.Controls.Add(Me.FindInFilesBtn)
None.gif        Me.Controls.Add(Me.FindBtn)
None.gif        Me.Controls.Add(Me.Label2)
None.gif        Me.Controls.Add(Me.ReplaceBox)
None.gif        Me.Controls.Add(Me.Label1)
None.gif        Me.Controls.Add(Me.FindBox)
None.gif        Me.FormBorderStyle 
=  System.Windows.Forms.FormBorderStyle.SizableToolWindow
None.gif        Me.Name 
=   " MultilineSearchForm "
None.gif        Me.Text 
=   " Multiline Search and Replace "
None.gif        Me.ResumeLayout(False)
None.gif    End Sub
None.gif#End Region
None.gif#Region 
" Properties "
None.gif    Private m_result As FindReplaceKind 
=  FindReplaceKind.none
None.gif    
''' <summary>Gets result button from this dialog.</summary>
None.gif
     ''' <value>The value specifying which button was pressed.</value>
None.gif
    Public ReadOnly Property result() As FindReplaceKind
None.gif        Get
None.gif            Return m_result
None.gif        End Get
None.gif    End Property
None.gif    Private m_findText As String
None.gif    
''' <summary>Gets escaped multiline text to be searched.</summary>
None.gif
     ''' <value></value>
None.gif
    Public ReadOnly Property findText() As String
None.gif        Get
None.gif            Return m_findText
None.gif        End Get
None.gif    End Property
None.gif    Private m_replaceText As String
None.gif    
''' <summary>Gets escaped multiline replace text.</summary>
None.gif
     ''' <value></value>
None.gif
    Public ReadOnly Property replaceText() As String
None.gif        Get
None.gif            Return m_replaceText
None.gif        End Get
None.gif    End Property
None.gif#End Region
None.gif    
''' <summary>Transforms the text to regular expression syntax.</summary>
None.gif
     ''' <param name="original">Original text.</param>
None.gif
     ''' <returns>Text with escaped regex characters.</returns>
None.gif
    Private Function escapeRegEx(ByVal original As String) As String
None.gif        Dim specialChars() As Char 
=   " \.*+^___FCKpd___0gt;<[]|{}:@#()~ " .ToCharArray
None.gif        Dim c As Char
None.gif        For Each c In specialChars
None.gif            original 
=  original.Replace(c.ToString,  " \ "   &  c.ToString)
None.gif        Next
None.gif        original 
=  original.Replace(vbCrLf,  " \n " )
None.gif        Return original
None.gif    End Function
None.gif    Private Sub MultilineSearchForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
None.gif        Try
None.gif            Me.Activate()
None.gif        Catch ex As System.Exception
None.gif        End Try
None.gif    End Sub
None.gif    Private Sub CancelBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelBtn.Click
None.gif        Try
None.gif            m_result 
=  FindReplaceKind.none
None.gif            Me.Close()
None.gif        Catch ex As System.Exception
None.gif        End Try
None.gif    End Sub
None.gif    Private Sub FindBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FindBtn.Click
None.gif        Try
None.gif            m_findText 
=  escapeRegEx(Me.FindBox.Text)
None.gif            m_replaceText 
=  escapeRegEx(Me.ReplaceBox.Text)
None.gif            m_result 
=  FindReplaceKind.find
None.gif            Me.Close()
None.gif        Catch ex As System.Exception
None.gif        End Try
None.gif    End Sub
None.gif    Private Sub FindInFilesBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FindInFilesBtn.Click
None.gif        Try
None.gif            m_findText 
=  escapeRegEx(Me.FindBox.Text)
None.gif            m_replaceText 
=  escapeRegEx(Me.ReplaceBox.Text)
None.gif            m_result 
=  FindReplaceKind.findInFiles
None.gif            Me.Close()
None.gif        Catch ex As System.Exception
None.gif        End Try
None.gif    End Sub
None.gif    Private Sub ReplaceBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReplaceBtn.Click
None.gif        Try
None.gif            m_findText 
=  escapeRegEx(Me.FindBox.Text)
None.gif            m_replaceText 
=  escapeRegEx(Me.ReplaceBox.Text)
None.gif            m_result 
=  FindReplaceKind.replace
None.gif            Me.Close()
None.gif        Catch ex As System.Exception
None.gif        End Try
None.gif    End Sub
None.gif    Private Sub ReplaceInFilesBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReplaceInFilesBtn.Click
None.gif        Try
None.gif            m_findText 
=  escapeRegEx(Me.FindBox.Text)
None.gif            m_replaceText 
=  escapeRegEx(Me.ReplaceBox.Text)
None.gif            m_result 
=  FindReplaceKind.replaceInFiles
None.gif            Me.Close()
None.gif        Catch ex As System.Exception
None.gif        End Try
None.gif    End Sub
None.gifEnd Class 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值