2012-08-29 14 views
25

Wystarczy migracji z vs10 do vs12 i wydaje się, że nawiasy są całkowicie rozbitych wzdłuż boku z innymi funkcjami, takimi jak wcięcia w C# na przykład typu (?):Curly szelki autouzupełnianie w Visual Studio 2012

public static void myFunc() { 

W visual studio 10 automatycznie dodaje do niego nawias klamrowy zamykający. Czy jest jakieś narzędzie elektryczne lub coś, co może to naprawić i dać takie samo zachowanie? the Brace Completer wymaga naciśnięcia Enter po funkcji dodania nawiasów zamykających.

Również w Narzędzia-> Opcje-> text-redaktora> C# -> formatting-> automatycznie formatować zakończony blok na } jest domyślnie włączona ..

+4

"narzędzia-> opcje-> edytor tekstu-> C# -> formatowanie-> automatyczne formatowanie ukończonego bloku na}" nie powoduje automatycznego dodawania nawiasów końcowych. Formatuje załączony kod ... właściwie wcięcia itp. Po dodaniu nawiasu końcowego kończącego. – Thelonias

+2

Dzięki, potrzebowałem tego, aby wyłączyć automatyczny zaczep, naprawdę denerwujący! – DevDave

+4

Mam przeciwny problem. Wygląda na to, że 2013 r. Robi to domyślnie. Jak, do cholery, wyłączasz to !? – BrainSlugs83

Odpowiedz

22

Visual Studio 2010 nie robi przez domyślny (przynajmniej nie w moim przypadku). Czy jesteś pewien, że nie używali rozszerzenie jak Productivity Power Tools

To jeden obsługuje VS2012: http://visualstudiogallery.msdn.microsoft.com/0e33cb22-d4ac-4f5a-902f-aff5177cc94d

+1

Dzięki, ale aplikacja brace completer wymaga Enter, aby zakończyć nawiasy klamrowe, co nie jest zachowaniem, którego szukałem. – aromasca

+1

Zakładam, że używasz tego na pierwszym linku, który nie wygląda na zaktualizowany dla VS2012. Wydaje się, że to nie wymaga naciśnięcia Enter. "Automatyczne uzupełnianie nawiasów poprawia produktywność pisania kodu poprzez automatyczne wstawianie konstruktu kodu zamykającego, gdy konstrukt otwierający jest wpisany dla VB i C#." – coolmine

42

Jeśli ktoś ma ten problem z VS 2013, istnieje teraz odpowiednie ustawienie. Właśnie zresetowałem ustawienia VS i znów zaczęliśmy uzupełniać aparaty. Dla mnie to nie były narzędzia wydajnościowe. Można go włączyć/wyłączyć tutaj:

enter image description here

+12

Dzięki Bogu, to niewiarygodnie denerwujące, jeśli nie jesteś przyzwyczajony do pracy z nim. –

+0

Okay, może jeśli Visual Studio poprawnie zwróciło to dla wyszukiwanego terminu "klamra" ... (to nie jest) – FriendlyGuy

-1

Oto kod, aby utworzyć Auto kompletne Wsporniki do 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; 
       } 
      } 
     } 
    } 
} 
+2

Jak to jest nawet istotne dla pytania? – VSG24