65.9K
CodeProject 正在变化。 阅读更多。
Home

Mash Up:代码转换器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.83/5 (49投票s)

2011年9月27日

CPOL

6分钟阅读

viewsIcon

133840

downloadIcon

4203

这是一个代码转换器,它使用了来自.NET社区的两个不同的DLL文件。新版本2013可供下载。

以前

VBCSCodeConvert/CodeConverter1.jpg

操作后

转换项目图像

ConverterProject.png

修复转换后的项目文件

VBCSCodeConvert/FixAFile1.png

Code Converter 2013

VBCSCodeConvert/CC_2013_640x520.png

引言

这是一个代码转换器,它使用了来自.NET社区的四个不同的DLL文件。我使用的DLL文件是FastColoredTextBox.dllConversionWrapper.dllICSharpCode.NRefactory.dllrsp.ConVert.dll。我主要从FastColoredTextBox那里获得了这个想法。然后我发现了VS插件(CodeConvert),它们都可以在CodeProject上找到。我使用与VS插件相同的DLL。ICSharpCode.NRefactory DLL可以在其网站上找到。FastColoredTextBox用于语法高亮。CodeConvert被引用,并且正如其名称所示。ICSharpCode.NRefactory DLL与CodeConvert.dll文件一起提供。

rspConVert.dll是Deniz Ezen的Econ.NetVert.Dll的重制版。我删除了asp.net部分,因为我无法使其正常工作。我还重新编辑了他的一些代码以便与我的程序一起使用。我添加了项目转换和项目转换文件的后处理。

背景

市面上有很多代码转换器,但99%都是基于Web的,只有一两个是Visual Studio插件。我必须说,插件肯定比基于Web的转换器有优势,而且它们可能也比这个程序有轻微优势,但是,你不需要打开Visual Studio,也不需要不断地在你的应用程序和互联网之间切换。你可以打开任何*.cs或*.vb文件并进行转换,然后稍后在Visual Studio中使用它,方法是使用NotePad++将其保存为文本文件或*.cs, *.vb文件。

代码

我实在想不出太多要写的东西,因为整个程序不包括空格只有79行代码,但我会试试。CodeConvert.dll只转换*.cs*.vb文件。它不做代码片段,例如单独的sub或function。只处理整个文件。

现在让我们看看下面的代码。

  • buttonClearAllCode_Click

    在这里,我们将每个TextBox设置为String.Empty

  • buttonCopyCSharpCode_Click

    在这里,我们将txtCSharp.Text添加到Clipboard

  • buttonCopyVBCode_Click

    在这里,我们将txtVBnet.Text添加到Clipboard

  • buttonConvertCSharpToVB_Click

    这是将C#转换为VB的所有工作发生的地方。在ICSharpCode.NRefactory DLL的CodeConversionHelper类中,有三个函数负责转换。它们是

    • Public Shared Function ConvertCSharpToVB(ByVal sourceCode As String) As String
    • Public Shared Function ConvertVBToCSharp(ByVal sourceCode As String) As String
    • Private Shared Function GenerateCode(ByVal sourceCode As String, ByVal language As SupportedLanguage) As String

    buttonConvertCSharpToVB_Click事件中,我们调用函数ConvertCSharpToVB(txtCSharp.Text)。然后,它会调用函数GenerateCode(ByVal sourceCode As String, ByVal language As SupportedLanguage)。源代码将是txtCSharp.Text,而支持的语言将是CSharpGenerateCode函数然后会调用ICSharpCode.NRefactory dll中的另外6个类,这超出了本文的范围。GenerateCode的源代码如下...

    Private Shared Function GenerateCode(ByVal sourceCode As String, ByVal language As SupportedLanguage) As String
        Using parser As IParser = ParserFactory.CreateParser(language, New StringReader(sourceCode))
            parser.Parse
            If (parser.Errors.Count = 0) Then
                Dim visitor As IOutputAstVisitor
                Dim specials As IList(Of ISpecial) = New ISpecial(0  - 1) {}
                If (language = SupportedLanguage.CSharp) Then
                    visitor = New VBNetOutputVisitor
                Else
                    visitor = New CSharpOutputVisitor
                End If
                Using SpecialNodesInserter.Install(specials, visitor)
                    parser.CompilationUnit.AcceptVisitor(visitor, Nothing)
                End Using
                Return visitor.Text
            End If
            Dim builder As New StringBuilder
            Return parser.Errors.ErrorOutput
        End Using
    End Function
  • buttonConvertVBtoCSharp_Click

    这是将VB转换为C#的所有工作发生的地方。它调用与buttonConvertCSharpToVB_Click事件相同的三个函数。请参见上方。

  • OpenToolStripMenuItem_Click

    OpenFileDialog出现时,如果我们选择一个文件打开,程序就知道在哪里输入选定的文件。如果它是*.cs文件,它将在txtCSharp TextBox中打开;如果是*.vb文件,它将在txtVBnet TextBox中打开。首先,文件将被读取然后插入。

  • frmConverter_FormClosing

    在这里,我们只是DisposeTextBoxes

  • frmConverter_Load

    如果窗口是最大化或正常大小,我们将SplitterDistance设置在窗体的中心。

  • frmConverter_SizeChanged

    在这个子程序中,我们对SplitterDistance做同样的事情,除了当窗口最小化时,我们将panel1Collapsed设置为True。这可以防止异常被抛出。这意味着SplitterDistance不能为(-1)。

整个程序粘贴在下面

Imports CodeConvert.ConversionLoader
Imports CodeConvert
Imports ICSharpCode.NRefactory
Imports System
Imports System.IO
Imports System.Text
Imports System.Environment
Imports FastColoredTextBoxNS

Public Class frmConverter

    Private Sub buttonClearAllCode_Click(sender As Object, _
	            e As System.EventArgs) Handles buttonClearAllCode.Click
        txtCSharp.Text = String.Empty
        txtVBnet.Text = String.Empty
    End Sub

    Private Sub buttonCopyCSharpCode_Click(sender As Object, _ 
	            e As System.EventArgs) Handles buttonCopyCSharpCode.Click
        My.Computer.Clipboard.SetText(txtCSharp.Text)
    End Sub

    Private Sub buttonCopyVBCode_Click(sender As Object, _
	            e As System.EventArgs) Handles buttonCopyVBCode.Click
        My.Computer.Clipboard.SetText(txtVBnet.Text)
    End Sub

    Private Sub buttonConvertCSharpToVB_Click(sender As Object, _
	            e As System.EventArgs) Handles buttonConvertCSharpToVB.Click
        Me.txtVBnet.Text = ConvertCSharpToVB(txtCSharp.Text)
        txtVBnet.Text &= vbCrLf & vbCrLf & "'Converted By: CodeConverter 2011 Conversion Utility!"
    End Sub

    Private Sub buttonConvertVBtoCSharp_Click(sender As Object, _
	            e As System.EventArgs) Handles buttonConvertVBtoCSharp.Click
        Me.txtCSharp.Text = ConvertVBToCSharp(txtVBnet.Text)
        txtCSharp.Text &= vbCrLf & vbCrLf & "//Converted By: CodeConverter 2011 Conversion Utility!"
    End Sub

    Private Sub OpenToolStripMenuItem_Click(sender As Object, _
	            e As System.EventArgs) Handles OpenToolStripMenuItem.Click
        Dim fName As String
        ofd.Filter = "C-Sharp Files (*.cs)|*.cs|VB Files (*.vb)|*.vb"

        If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
            fName = ofd.FileName

            If fName.EndsWith(".cs") Then
                txtCSharp.Language = Language.CSharp
                txtCSharp.Text = File.ReadAllText(fName)
                buttonConvertCSharpToVB.Enabled = True
                buttonConvertVBtoCSharp.Enabled = False
                buttonCopyVBCode.Enabled = True
                buttonCopyCSharpCode.Enabled = False
            Else
                txtVBnet.Text = File.ReadAllText(fName)
                txtVBnet.Language = Language.VB
                buttonConvertCSharpToVB.Enabled = False
                buttonConvertVBtoCSharp.Enabled = True
                buttonCopyVBCode.Enabled = False
                buttonCopyCSharpCode.Enabled = True
            End If
        End If
    End Sub

    Private Sub frmConverter_FormClosing(sender As Object, _
	            e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        txtCSharp.Dispose()
        txtVBnet.Dispose()
    End Sub

    Private Sub frmConverter_Load(sender As Object, _
	            e As System.EventArgs) Handles Me.Load
        If Me.WindowState = FormWindowState.Maximized Then
            sc1.SplitterDistance = ((sc1.Width / 2) - (sc1.SplitterWidth / 2))
        Else
            sc1.SplitterDistance = ((sc1.Width / 2) - (sc1.SplitterWidth / 2))
        End If
    End Sub

    Private Sub frmConverter_SizeChanged(sender As Object, _
	            e As System.EventArgs) Handles Me.SizeChanged
        If Me.WindowState = FormWindowState.Maximized Then
            txtCSharp.BackgroundImageLayout = ImageLayout.Stretch
            txtVBnet.BackgroundImageLayout = ImageLayout.Stretch
            sc1.Panel1Collapsed = False
            sc1.SplitterDistance = ((sc1.Width / 2) - (sc1.SplitterWidth / 2))
        ElseIf Me.WindowState = FormWindowState.Minimized Then
            sc1.Panel1Collapsed = True
        Else
            txtCSharp.BackgroundImageLayout = ImageLayout.Center
            txtVBnet.BackgroundImageLayout = ImageLayout.Center
            sc1.Panel1Collapsed = False
            sc1.SplitterDistance = ((sc1.Width / 2) - (sc1.SplitterWidth / 2))
        End If
    End Sub

    Private Sub CloseToolStripMenuItem_Click(sender As System.Object, _
	            e As System.EventArgs) Handles CloseToolStripMenuItem.Click
        Application.Exit()
    End Sub
End Class

并非所有错误都生而平等

并非所有错误都可以立即修复。正如所有人造事物一样,没有什么是100%可靠的。所以现在我们必须手动处理下面的例子……暂时是这样。

  • 实现接口

    C#不需要在必需的subs或functions之后添加implement语句。目前,这必须在VBnet中手动完成。C#也不需要(Handles)语句,但在将VB转换为C#时,它会显示一个错误消息说明这一点,并且对于Implements子句也是如此。

  • AddHandler, AddressOf....已更新

    在C#中,Addhandler Statement看起来像这样……(Sub.Event += New(SomeTypeOfEventArgs)Sub_Event)当从C#转换时,这可能被视为一个加法。在与Expresso进行了一些尝试之后,我终于找到了一个正则表达式字符串,可以找到C#代码Sub.Event += New(SomeTypeOfEventArgs)Sub_Event。下面是如何修复 bisher所有代码转换器都未能解决的,从C#转换到VB的AddHandler, AddressOf语句。

    Private Sub VBFixIt()
    
        'Not all errors can be fixed right now. As with all man-made things
        'nothing is 100% reliable.
    	'I am trying to add all the toolbox components EventArgs to this area.
    	'This will be updated on a regular basis.
    	 
    	Dim m As Match
        Dim strMatch As String
        Dim txtVBNetText As String = txtVBnet.Text
        lblStatus4.Text = "Please Wait...Conversion Started!!!"
    
        'Some of the thirty+ fixes that need to be attended too.
        Dim regexStr As String = "\b\w+.+=\sNew\s\w+\(\w+_\w+\)"                        'AddHandler
    
        Dim remregexStr As String = "\b\w+.-=\sNew\s\w+\(\w+_\w+\)"                     'RemoveHandler
    
        Dim patternIsInteger As String = "\bAs\sObject\s\=\s(\d+.|\w+.SelectedIndex)"   'Integer
    
        Dim patternClass As String = "\bAs\sObject\s\=\sNew\s\w+\(\)"                   'Class
    
        Dim patternTryCast As String = "\bAs\sObject\s\=\sTryCast\(e.Argument\,\s\w+\)" 'TryCast
    
        'The more common System.Events fixes
        Dim patternSystemEventArgs As String = "\b\w+_(AcceptsTabChanged|AutoSizeChanged|" & _ 
                  "BackColorChanged|BackgroundImageChanged|BackgroundImageLayoutChanged" _
                  & "|BindingContextChanged|BorderStyleChanged|" & _ 
                  "CausesValidationChanged|Click|ClientSizeChanged|ContextMenuChanged" _
                  & "|ContextMenuStripChanged|CursorChanged|" & _ 
                  "DataSourceChanged|DisplayMemberChanged|Disposed|DockChanged|DoubleClick|DragLeave" _
                  & "|DropDown|DropDownClosed|DropDownStyleChanged|" & _ 
                  "EnabledChanged|FormatInfoChanged|FormatStringChanged|FormattingEnabledChanged" _
                  & "|Enter|FontChanged|ForeColorChanged|GotFocus|" & _ 
                  "HandleCreated|HandleDestroyed|HideSelectionChanged|ImeModeChanged|Leave|LocationChanged" _
                  & "|LostFocus|MarginChanged|MouseCaptureChanged|" & _ 
                  "Move|ModifiedChanged|MultilineChanged|PaddingChanged|ParentChanged|RegionChanged" _
                  & "|ReadOnlyChanged|Resize|RightToLeftChanged|" & _ 
                  "SizeChanged|StyleChanged|SystemColorsChanged|TabIndexChanged" _
                  & "|TabStopChanged|TextChanged|TextAlignChanged|" & _ 
                  "Validated|VisibleChanged|ValueMemberChanged|Load|FormClosed|MouseEnter" _
                  & "|MouseHover|MouseLeave|SelectionChangeCommitted|" & _ 
                  "SelectedIndexChanged|SelectedItemChanged|SelectedValueChanged)" & _ 
                  "\((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\s(EventArgs|" & _ 
                  "System\.EventArgs)\)|sender\sAs\sObject\,\se\sAs\s(EventArgs|System\.EventArgs)\))"
    
        Dim patternComponentModelCancelEventArgs As String = "\b\w+_Validating\((ByVal\ssender\sAs\sObject\," & _ 
            "\sByVal\se\sAs\sSystem\.ComponentModel\.CancelEventArgs\)|" & _ 
            "sender\sAs\sObject\,\se\sAs\sSystem\.ComponentModel\.CancelEventArgs)\)"
    
        Dim patternMeasureItemEventArgs As String = "\b\w+_MeasureItem\((ByVal\" & _ 
            "ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\" & _ 
            ".MeasureItemEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\" & _ 
            ".Windows\.Forms\.MeasureItemEventArgs)\)"
    
        Dim patternListControlConvertEventArgs As String = "\b\w+_Format\((ByVal\" & _ 
            "ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\." & _ 
            "ListControlConvertEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\" & _ 
            ".Windows\.Forms\.ListControlConvertEventArgs)\)"
    
        Dim patternDrawItemEventArgs As String = "\b\w+_DrawItem\((ByVal\ssender" & _ 
            "\sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.DrawItemEventArgs\)" & _ 
            "|sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.DrawItemEventArgs)\)"
    
        Dim patternQueryPageSettingsEventArgs As String = "\b\w+_QueryPageSettings\" & _ 
            "((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Drawing\.Printing\" & _ 
            ".QueryPageSettingsEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\" & _ 
            ".Drawing\.Printing\.QueryPageSettingsEventArgs)\)"
    
        Dim patternPrintPageEventArgs As String = "\b\w+_PrintPage\((ByVal\" & _ 
            "ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Drawing\.Printing\" & _ 
            ".PrintPageEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\.Drawing\.Printing\.PrintPageEventArgs)\)"
    
        Dim patternPrintEventArgs As String = "\b\w+_(BeginPrint|EndPrint)\" & _ 
            "((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Drawing\.Printing\" & _ 
            ".PrintEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\.Drawing\.Printing\.PrintEventArgs)\)"
    
        Dim patternQueryAccessibilityHelpEventArgs As String = "\b\w+_QueryAccessibilityHelp\" & _ 
            "((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\sSystem.Windows.Forms." & _ 
            "QueryAccessibilityHelpEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\" & _ 
            ".Windows\.Forms\.QueryAccessibilityHelpEventArgs)\)"
    
        Dim patternQueryContinueDragEventArgs As String = "\b\w+_QueryContinueDrag\" & _ 
            "((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\sSystem.Windows.Forms." & _ 
            "QueryContinueDragEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\" & _ 
            ".Windows\.Forms\.QueryContinueDragEventArgs)\)"
    
        Dim patternCancelEventArgs As String = "\b\w+_Validating\((ByVal\ssender\" & _ 
            "sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.CancelEventArgs\)|" & _ 
            "sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.CancelEventArgs)\)"
    
        Dim patternFormClosingEventArgs As String = "\b\w+_FormClosing\((ByVal\ssender\" & _ 
            "sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.FormClosingEventArgs\)" & _ 
            "|sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.FormClosingEventArgs)\)"
    
        Dim patternPreviewKeyDownEventArgs As String = "\b\w+_PreviewKeyDown\((ByVal\" & _ 
            "ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\." & _ 
            "PreviewKeyDownEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\" & _ 
            ".Windows\.Forms\.PreviewKeyDownEventArgs)\)"
    
        Dim patternPaintEventArgs As String = "\b\w+_Paint\((ByVal\ssender\" & _ 
            "sAs\sObject\,|sender\sAs\sObject\,)\s(ByVal\se\sAs\sSystem\.Windows\" & _ 
            ".Forms\.PaintEventArgs\)|e\sAs\sSystem\.Windows\.Forms\.PaintEventArgs)\)"
    
        Dim patternLayoutEventArgs As String = "\b\w+_HelpRequested\((ByVal\ssender\" & _ 
            "sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.LayoutEventArgs\)|" & _ 
            "sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.LayoutEventArgs)\)"
    
        Dim patternControlAddedRemoved As String = "\b\w+_(ControlAdded|ControlRemoved)" & _ 
            "\((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\" & _ 
            ".ControlEventArgs\)|sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.ControlEventArgs)\)"
    
        Dim patternChangeUICues As String = "\b\w+_ChangeUICues\((ByVal\ssender\sAs\" & _ 
            "sObject\,\sByVal\se\sAs\sSystem\.Window\s.Forms\.UICuesEventArgs\)|" & _ 
            "sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.UICuesEventArgs)\)"
    
        Dim patternGiveFeedback As String = "\b\w+_GiveFeedback\((ByVal\ssender\sAs\" & _ 
            "sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.GiveFeedbackEventArgs\)" & _ 
            "|sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.GiveFeedbackEventArgs)\)"
    
        Dim patternHelpRequested As String = "\b\w+_HelpRequested\((ByVal\ssender\sAs\" & _ 
            "sObject\,\sByVal\shlpevent\sAs\sSystem\.Windows\.Forms\.HelpEventArgs\)|" & _ 
            "sender\sAs\sObject\,\shlpevent\sAs\sSystem\.Windows\.Forms\.HelpEventArgs)\)"
    
        Dim patternInvalidated As String = "\b\w+_Invalidated\((ByVal\ssender\sAs\" & _ 
            "sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.InvalidateEventArgs\)" & _ 
            "|sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.InvalidateEventArgs)\)"
    
        Dim patternCheckChanged As String = "\b\w+_CheckChanged\((ByVal\ssender\sAs\" & _ 
            "sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.CheckChangedEventArgs\)" & _ 
            "|sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.CheckChangedEventArgs)\)"
    
        Dim patternBackgroundWorker As String = "\b\w+_(DoWork|ProgressChanged|" & _ 
            "RunWorkerCompleted)\((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\" & _ 
            ".ComponentModel\.(DoWorkEventArgs|ProgressChangedEventArgs|" & _ 
            "RunWorkerCompletedEventArgs)\)|sender\sAs\sObject\,\se\sAs\sSystem\" & _ 
            ".ComponentModel\.(DoWorkEventArgs|ProgressChangedEventArgs|RunWorkerCompletedEventArgs))\)"
    
        Dim patternMouseEventArgs As String = "\b\w+_(MouseUp|MouseDown|MouseMove)\" & _ 
            "((ByVal\ssender\sAs\sObject\,\sByVal\se\sAs\sMouseEventArgs\)|" & _ 
            "sender\sAs\sObject\,\se\sAs\sMouseEventArgs)\)"
    
        Dim patternKeysUpDown As String = "\b\w+_(KeyUp|KeyDown)\(ByVal\ssender\sAs\" & _ 
            "sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.KeyEventArgs\)|" & _ 
            "sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.KeyEventArgs\)"
    
        Dim patternKeyPress As String = "\b\w+_KeyPress\((ByVal\ssender\sAs\sObject\," & _ 
            "\sByVal\se\sAs\s(System\.Windows\.Forms\.KeyPressEventArgs|KeyPressEventArgs)" & _ 
            "\)|sender\sAs\sObject\,\se\sAs\s(System\.Windows\.Forms\" & _ 
            ".KeyPressEventArgs|KeyPressEventArgs))\)"
    
        Dim patternDragDropEnter As String = "\b\w+_(DragDrop|DragEnter)\((ByVal\" & _ 
            "ssender\sAs\sObject\,\sByVal\se\sAs\sSystem\.Windows\.Forms\.DragEventArgs\)" & _ 
            "|sender\sAs\sObject\,\se\sAs\sSystem\.Windows\.Forms\.DragEventArgs)\)"
        
    	'''Code Continues
    End Sub

    在使用ICsharp.NRefactory.dll进行转换后,我进行了一个POST转换修复,使用正则表达式字符串来修复当前转换的VB代码。我还在此次升级中添加了许多后处理修复。我还有很长的路要走才能完成后处理修复,我一直在努力编码。我最终会完成的!!!

如果您没有下面的应用程序和DLL,请获取它们,因为您将需要它们。它们都是免费的。

关注点

历史

添加了一些额外的subs来进行当前代码的后处理。删除了可能令之前下载过该应用程序的某些或所有用户感到恼火的图片。为此失误表示歉意

VBFixIt Sub现在拥有超过14,500到15,000个转换后的修复,使用regex strings

  • 上传于 2011-09-26
  • 上传于 2011-10-04
  • 上传于 2012-04-03
  • 上传于 2012-04-05
  • 上传于 2012-04-08
  • 上传于 2012-04-12,修复了正则表达式字符串中的一些逻辑错误。
  • 上传于 2012-04-18,稍微更改了UI并添加了更多正则表达式字符串。

这应该是最后一次更新了。可能不会。我已经完成了所有工具箱组件的EVENTARGS添加,大约15,000个,并且随着我发现C#程序员编写某些代码片段的不同方式(AddHandlerRemoveHandlerBeginEnvoke,…)还在继续添加。如果任何C#程序员发现编写代码片段的不同方式,通过电子邮件发送代码给我,以便我将其添加到应用程序中。我希望大家都能喜欢这个应用程序,并希望它能为您带来非常好的用途。

如果本文中有任何听起来有些重复的地方,那很可能是,所以请不要留言指出,因为我已经知道了。

© . All rights reserved.