Автозаполнение фигурных скобок в Visual Studio 2012

просто перенесен с vs10 на vs12, и кажется, что фигурные скобки полностью сломаны вдоль стороны с некоторыми другими функциями, такими как отступ в C# (?) например типа:

public static void myFunc() {

в visual studio 10 он автоматически добавит для него закрывающую фигурную скобку. Есть какой-то инструмент или что-то, что может исправить это и дать такое же поведение? the Brace Completer требуется нажать Enter после функции для добавления закрытия фигурные скобки.

также в Инструменты- > Параметры - >текстовый редактор - >c# - > форматирование - > автоматически форматировать завершенный блок на } включен по умолчанию..

4 ответов


Visual Studio 2010 не делает этого по умолчанию (по крайней мере, в моем случае). Вы уверены, что не использовали расширение типа Производительность Электроинструментов

этот один поддерживает в VS2012: http://visualstudiogallery.msdn.microsoft.com/0e33cb22-d4ac-4f5a-902f-aff5177cc94d


Если у кого-то есть эта проблема с VS 2013, есть настройка для этого сейчас. Я просто сбросил настройки VS, и он снова начал завершать мои фигурные скобки. Для меня это не были инструменты повышения производительности. Вы можете включить/выключить здесь:

enter image description here


производительность электроинструментов на 2012 год теперь доступны, которые имеют автоматическое завершение скобки, OP почти определенно использовал версию 2010.

производительность электроинструментов на 2013 год

Если вы не использовали его раньше, вы можете включить/выключить почти каждую функцию, которую он добавляет в options>productivity power tools.


вот код для создания автоматически полных скобок для RichTextBox с помощью C#.

using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Windows.Forms;  

namespace Auto_Complete_Brackets  
{  
    public partial class Form1 : Form  
    {  
        public Form1()  
        {  
            InitializeComponent();  
        }  

        //declare  isCurslyBracesKeyPressed variable as Boolean and assign false value  
        //to check { key is pressed or not  
        public static Boolean isCurslyBracesKeyPressed = false;  

        //richTextBox1 KeyPress events  

        // if key (,{,<,",',[ is pressed then insert opposite key to richTextBox1 at Position SelectionStart+1  
        // add one line after inserting, e.Handled=true;  
        //finally set SelectionStart to specified position  

        private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)  
        {  
            String s = e.KeyChar.ToString();  
            int sel = richTextBox1.SelectionStart;  
            if (checkBox1.Checked == true)  
            {  
                switch (s)  
                {  
                    case "(": richTextBox1.Text = richTextBox1.Text.Insert(sel, "()");  
                        e.Handled = true;  
                        richTextBox1.SelectionStart = sel + 1;  
                        break;  

                    case "{":  
                        String t = "{}";  
                        richTextBox1.Text = richTextBox1.Text.Insert(sel, t);  
                        e.Handled = true;  
                        richTextBox1.SelectionStart = sel + t.Length - 1;  
                        isCurslyBracesKeyPressed = true;  
                        break;  

                    case "[": richTextBox1.Text = richTextBox1.Text.Insert(sel, "[]");  
                        e.Handled = true;  
                        richTextBox1.SelectionStart = sel + 1;  
                        break;  

                    case "<": richTextBox1.Text = richTextBox1.Text.Insert(sel, "<>");  
                        e.Handled = true;  
                        richTextBox1.SelectionStart = sel + 1;  
                        break;  

                    case "\"": richTextBox1.Text = richTextBox1.Text.Insert(sel, "\"\"");  
                        e.Handled = true;  
                        richTextBox1.SelectionStart = sel + 1;  
                        break;  

                    case "'": richTextBox1.Text = richTextBox1.Text.Insert(sel, "''");  
                        e.Handled = true;  
                        richTextBox1.SelectionStart = sel + 1;  
                        break;  
                }  
            }  
        }  


        // richTextBox1 Key Down event  
        /* 
         * when key  {  is pressed and {} is inserted in richTextBox 
         * and isCurslyBracesKeyPressed is true then insert some blank text to richTextBox1 
         * when Enter key is down 
         * it will look like this when Enter key is down 

             { 
                   | 
             }         

         * */  

        private void richTextBox1_KeyDown(object sender, KeyEventArgs e)  
        {  
            int sel = richTextBox1.SelectionStart;  
            if (e.KeyCode == Keys.Enter)  
            {  
                if(isCurslyBracesKeyPressed==true)  
                {  
                    richTextBox1.Text = richTextBox1.Text.Insert(sel, "\n          \n");  
                    e.Handled = true;  
                    richTextBox1.SelectionStart = sel + "          ".Length;  
                    isCurslyBracesKeyPressed = false;  
                }  
            }  
        }  
    }  
}