26

刚刚从 vs10 迁移到 vs12,看起来花括号与 C# 中的缩进(?)等其他一些功能完全断开,例如输入:

public static void myFunc() {

在 Visual Studio 10 中,它会自动为其添加右花括号。是否有一些电动工具或其他东西可以解决这个问题并给出相同的行为?Brace Completer需要在函数后按 Enter 以添加右括号。

同样在tools->options->text-editor->c#->formatting->automatic format completed block on} 默认开启..

4

4 回答 4

43

如果有人对 VS 2013 有这个问题,现在有一个设置。我刚刚重置了我的 VS 设置,它又开始完成我的牙套。对我来说,这不是生产力电动工具。您可以在此处打开/关闭它:

在此处输入图像描述

于 2014-03-12T17:54:33.060 回答
22

默认情况下,Visual Studio 2010 不会这样做(至少在我的情况下不是)。你确定你没有使用像Productivity Power Tools这样的扩展

这个支持VS2012:http: //visualstudiogallery.msdn.microsoft.com/0e33cb22-d4ac-4f5a-902f-aff5177cc94d

于 2012-08-29T12:31:35.303 回答
8

Productivity Power Tools for 2012现在可以自动完成,OP 几乎肯定使用 2010 版本。

2013 年生产力电动工具

如果您以前没有使用过它,您可以打开/关闭它在选项>生产力电动工具中添加的几乎所有功能。

于 2013-08-22T08:27:35.947 回答
-1

这是使用 C# 为 RichTextBox 创建自动完成括号的代码。

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;  
                }  
            }  
        }  
    }  
}  
于 2016-02-20T12:58:52.277 回答