How do I make Visual Studio auto generate braces for a function block?

后端 未结 5 1735
挽巷
挽巷 2021-01-11 15:19

I could swear I\'ve seen people typing function headers and then hitting some key combination to auto-create function braces and insert the cursor between them like so:

相关标签:
5条回答
  • 2021-01-11 15:24

    Check out Resharper - it is a Visual Studio add-on with this feature, among many other development helps.

    Also see C# Completer, another add-on.

    If you want to roll your own, check out this article. Insane that one should have to do that, though.

    0 讨论(0)
  • 2021-01-11 15:39

    I just created one based on @Luke's above. This one, you want to hit Enter then hit your key combination and it will insert:

    if ()
    {
    
    }
    else
    {
    
    }
    

    And it will put your cursor in the parenthesis by the if statement.

    Sub IfStatement()
        DTE.ActiveDocument.Selection.Text = "if ()"
        DTE.ActiveDocument.Selection.NewLine()
        DTE.ActiveDocument.Selection.Text = "{"
        DTE.ActiveDocument.Selection.NewLine(2)
        DTE.ActiveDocument.Selection.Text = "}"
        DTE.ActiveDocument.Selection.NewLine()
        DTE.ActiveDocument.Selection.Text = "else"
        DTE.ActiveDocument.Selection.NewLine(2)
        DTE.ActiveDocument.Selection.Text = "{"
        DTE.ActiveDocument.Selection.NewLine(2)
        DTE.ActiveDocument.Selection.Text = "}"
        DTE.ActiveDocument.Selection.LineUp(False, 7)
        DTE.ActiveDocument.Selection.EndOfLine()
        DTE.ActiveDocument.Selection.CharLeft(3)
    End Sub
    
    0 讨论(0)
  • 2021-01-11 15:42

    The tools look nice (especially Resharper but at $200-350 ouch!) but I ended up just recording a macro and assigning it to ctrl+alt+[

    Macro came out like this:

    Sub FunctionBraces()
        DTE.ActiveDocument.Selection.NewLine
        DTE.ActiveDocument.Selection.Text = "{}"
        DTE.ActiveDocument.Selection.CharLeft
        DTE.ActiveDocument.Selection.NewLine(2)
        DTE.ActiveDocument.Selection.LineUp
        DTE.ActiveDocument.Selection.Indent
    End Sub
    

    Edit: I used the macro recorder to make this and it wasn't too bad

    0 讨论(0)
  • 2021-01-11 15:42

    It can be achieved by using code snippets, some are already built in (try typing "svm" and hitting TAB-TAB)..

    There's a wealth of info on the net on creating these:

    Jeff did a post himself here

    Have a google! I use them LOTS! :D

    0 讨论(0)
  • 2021-01-11 15:47

    Take a look at visual assist as well.

    0 讨论(0)
提交回复
热议问题