Автозаполнение фигурных скобок в Visual Studio 2012
Просто мигрировал с vs10 на vs12, и кажется, что фигурные скобки полностью разбиты вместе с некоторыми другими функциями, такими как отступ в C# (?), Например, type:
public static void myFunc() {
В visual studio 10 он автоматически добавляет закрывающую фигурную скобку. Есть какой-нибудь электроинструмент или что-то такое, что может это исправить и дать такое же поведение? для завершения скобок необходимо нажать Enter после функции, чтобы добавить закрывающие скобки.
Также в tools->options->text-editor-> C#->formatting-> автоматически форматировать законченный блок на }
включен по умолчанию..
4 ответа
Visual Studio 2010 не делает этого по умолчанию (по крайней мере, в моем случае). Вы уверены, что не используете расширение, такое как Productivity Power Tools?
Этот поддерживает VS2012: http://visualstudiogallery.msdn.microsoft.com/0e33cb22-d4ac-4f5a-902f-aff5177cc94d
Если у кого-то возникла эта проблема с VS 2013, есть настройка для этого сейчас. Я просто сбросил настройки VS, и он снова начал заполнять мои скобки. Для меня это были не мощные инструменты. Вы можете включить / выключить его здесь:
В настоящее время доступны мощные инструменты для повышения производительности на 2012 год с автоматическим завершением, OP почти наверняка использовал версию 2010 года.
Производительность электроинструмента за 2013 год
Если вы не использовали его раньше, вы можете включить / выключить практически все функции, которые он добавляет в опциях> инструменты повышения производительности.
Вот код для создания автозаполненных скобок для 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;
}
}
}
}
}