2012-08-29 20 views
25

Sólo emigró de VS10 a VS12 y parece que las llaves se ha roto por completo junto con algunas otras características como la muesca en C# por ejemplo de tipo (?):Las llaves de autocompletar en Visual Studio 2012

public static void myFunc() { 

En visual studio 10 agregaría automáticamente la llave de cierre para ello. ¿Hay alguna herramienta eléctrica o algo que pueda solucionar esto y ofrezca el mismo comportamiento? el Brace Completer requiere presionar Entrar después de la función para agregar las llaves de cierre.

También en herramientas-> opciones-> Texto-editor-> C# -> formatting-> automáticamente formato de bloque terminado en } está activada de forma predeterminada ..

+4

"tools-> options-> text-editor-> C# -> formatting-> automaticcly format completed block on}" no agrega automáticamente el corchete final. Formatea el código adjunto ... sangra adecuadamente, etc. cuando agrega el corchete final. – Thelonias

+2

¡Gracias, necesitaba esto para apagar el refuerzo automático, realmente molesto! – DevDave

+4

Tengo el problema opuesto. Parece que 2013 está haciendo esto por defecto. ¿Cómo diablos apagas esto? – BrainSlugs83

Respuesta

22

Visual Studio 2010 no hace eso por predeterminado (al menos no en mi caso). ¿Seguro que no estaba utilizando como una extensión Productivity Power Tools

Ésta es compatible con VS2012: http://visualstudiogallery.msdn.microsoft.com/0e33cb22-d4ac-4f5a-902f-aff5177cc94d

+1

Gracias, pero completar el parche requiere Enter para completar las llaves, que no es el comportamiento que estaba buscando. – aromasca

+1

Supongo que estaba usando el que está en el primer enlace que no parece que haya sido actualizado para VS2012 todavía. Parece que no es necesario presionar enter. "La finalización automática del refuerzo mejora la productividad del código de escritura al insertar automáticamente la construcción del código de cierre cuando se escribe la construcción de apertura para VB y C#." – coolmine

42

Si alguien tiene este problema con VS 2013, hay una configuración para esto ahora. Simplemente reinicié mi configuración VS y comenzó a completar mis llaves de nuevo. Para mí, no se trata de herramientas de potencia de productividad. Se puede activar/desactivar aquí:

enter image description here

+12

Gracias a Dios, es increíblemente molesto si no estás acostumbrado a trabajar con él. –

+0

Bien, tal vez si Visual Studio devolvió correctamente esto para el término de búsqueda "llave" ... (no lo hace) – FriendlyGuy

-1

Aquí está el código para crear Auto soportes completos para RichTextBox utilizando 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; 
       } 
      } 
     } 
    } 
} 
+2

¿Cómo es esto relevante para la pregunta? – VSG24

Cuestiones relacionadas