AutoComplete Brackets In C#.NET/VB .NET

In this article you will learn how to create Auto Complete Brackets in C#.NET or VB.Net. Completing { , ( , " , ' , < , [ char.

 
 
Step 1:  Start Visual Studio and create Windows Form Application in C# or VB as you wish.
 
Step 2: Add CheckBox and RichTextBox to your form.
 
Step 3:  Add  KeyPress and KeyDown events to RichTextBox.
 
Step 4: Now add the following code defined in KeyPress and KeyDown event into your code.

How it Works

It's simple, just identify which key is pressed in richTextBox, if it is ( open round bracket then read SelectionStart from richTextBox and insert opposite character to richTextBox at position SelectionStart+1.
Finally add one line once opposite character is inserted and that is e.Handled=true;  

C# Code for Auto Complete Brackets,
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Windows.Forms;  
  7.   
  8. namespace Auto_Complete_Brackets  
  9. {  
  10.     public partial class Form1 : Form  
  11.     {  
  12.         public Form1()  
  13.         {  
  14.             InitializeComponent();  
  15.         }  
  16.   
  17.         //declare  isCurslyBracesKeyPressed variable as Boolean and assign false value  
  18.         //to check { key is pressed or not  
  19.         public static Boolean isCurslyBracesKeyPressed = false;  
  20.   
  21.         //richTextBox1 KeyPress events  
  22.   
  23.         // if key (,{,<,",',[ is pressed then insert opposite key to richTextBox1 at Position SelectionStart+1  
  24.         // add one line after inserting, e.Handled=true;  
  25.         //finally set SelectionStart to specified position  
  26.   
  27.         private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)  
  28.         {  
  29.             String s = e.KeyChar.ToString();  
  30.             int sel = richTextBox1.SelectionStart;  
  31.             if (checkBox1.Checked == true)  
  32.             {  
  33.                 switch (s)  
  34.                 {  
  35.                     case "(": richTextBox1.Text = richTextBox1.Text.Insert(sel, "()");  
  36.                         e.Handled = true;  
  37.                         richTextBox1.SelectionStart = sel + 1;  
  38.                         break;  
  39.   
  40.                     case "{":  
  41.                         String t = "{}";  
  42.                         richTextBox1.Text = richTextBox1.Text.Insert(sel, t);  
  43.                         e.Handled = true;  
  44.                         richTextBox1.SelectionStart = sel + t.Length - 1;  
  45.                         isCurslyBracesKeyPressed = true;  
  46.                         break;  
  47.   
  48.                     case "[": richTextBox1.Text = richTextBox1.Text.Insert(sel, "[]");  
  49.                         e.Handled = true;  
  50.                         richTextBox1.SelectionStart = sel + 1;  
  51.                         break;  
  52.   
  53.                     case "<": richTextBox1.Text = richTextBox1.Text.Insert(sel, "<>");  
  54.                         e.Handled = true;  
  55.                         richTextBox1.SelectionStart = sel + 1;  
  56.                         break;  
  57.   
  58.                     case "\"": richTextBox1.Text = richTextBox1.Text.Insert(sel, "\"\"");  
  59.                         e.Handled = true;  
  60.                         richTextBox1.SelectionStart = sel + 1;  
  61.                         break;  
  62.   
  63.                     case "'": richTextBox1.Text = richTextBox1.Text.Insert(sel, "''");  
  64.                         e.Handled = true;  
  65.                         richTextBox1.SelectionStart = sel + 1;  
  66.                         break;  
  67.                 }  
  68.             }  
  69.         }  
  70.   
  71.   
  72.         // richTextBox1 Key Down event  
  73.         /* 
  74.          * when key  {  is pressed and {} is inserted in richTextBox 
  75.          * and isCurslyBracesKeyPressed is true then insert some blank text to richTextBox1 
  76.          * when Enter key is down 
  77.          * it will look like this when Enter key is down 
  78.           
  79.              { 
  80.                    | 
  81.              }         
  82.            
  83.          * */  
  84.   
  85.         private void richTextBox1_KeyDown(object sender, KeyEventArgs e)  
  86.         {  
  87.             int sel = richTextBox1.SelectionStart;  
  88.             if (e.KeyCode == Keys.Enter)  
  89.             {  
  90.                 if(isCurslyBracesKeyPressed==true)  
  91.                 {  
  92.                     richTextBox1.Text = richTextBox1.Text.Insert(sel, "\n          \n");  
  93.                     e.Handled = true;  
  94.                     richTextBox1.SelectionStart = sel + "          ".Length;  
  95.                     isCurslyBracesKeyPressed = false;  
  96.                 }  
  97.             }  
  98.         }  
  99.     }  
  100. }  
VB.Net Code for Auto Complete Brackets
  1. Imports System  
  2. Imports System.Collections.Generic  
  3. Imports System.ComponentModel  
  4. Imports System.Data  
  5. Imports System.Drawing  
  6. Imports System.Windows.Forms  
  7. Public Class Form1  
  8.   
  9.     'declare  isCurslyBracesKeyPressed variable as Boolean and assign false value  
  10.     'to check { key is pressed or not  
  11.     Public Shared isCurslyBracesKeyPressed As [Boolean] = False  
  12.   
  13.     'RichTextBox1 KeyPress events  
  14.   
  15.     ' if key (,{,<,",',[ is pressed then insert opposite key to RichTextBox1 at Position SelectionStart+1  
  16.     ' add one line after inserting, e.Handled=true;  
  17.     'finally set SelectionStart to specified position  
  18.   
  19.     Private Sub RichTextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles RichTextBox1.KeyPress  
  20.         Dim s As [String] = e.KeyChar.ToString()  
  21.         Dim sel As Integer = RichTextBox1.SelectionStart  
  22.         If checkBox1.Checked = True Then  
  23.             Select Case s  
  24.                 Case "("  
  25.                     RichTextBox1.Text = RichTextBox1.Text.Insert(sel, "()")  
  26.                     e.Handled = True  
  27.                     RichTextBox1.SelectionStart = sel + 1  
  28.                     Exit Select  
  29.   
  30.                 Case "{"  
  31.                     Dim t As [String] = "{}"  
  32.                     RichTextBox1.Text = RichTextBox1.Text.Insert(sel, t)  
  33.                     e.Handled = True  
  34.                     RichTextBox1.SelectionStart = sel + t.Length - 1  
  35.                     isCurslyBracesKeyPressed = True  
  36.                     Exit Select  
  37.   
  38.                 Case "["  
  39.                     RichTextBox1.Text = RichTextBox1.Text.Insert(sel, "[]")  
  40.                     e.Handled = True  
  41.                     RichTextBox1.SelectionStart = sel + 1  
  42.                     Exit Select  
  43.   
  44.                 Case "<"  
  45.                     RichTextBox1.Text = RichTextBox1.Text.Insert(sel, "<>")  
  46.                     e.Handled = True  
  47.                     RichTextBox1.SelectionStart = sel + 1  
  48.                     Exit Select  
  49.   
  50.                 Case """"  
  51.                     RichTextBox1.Text = RichTextBox1.Text.Insert(sel, """""")  
  52.                     e.Handled = True  
  53.                     RichTextBox1.SelectionStart = sel + 1  
  54.                     Exit Select  
  55.   
  56.                 Case "'"  
  57.                     RichTextBox1.Text = RichTextBox1.Text.Insert(sel, "''")  
  58.                     e.Handled = True  
  59.                     RichTextBox1.SelectionStart = sel + 1  
  60.                     Exit Select  
  61.             End Select  
  62.         End If  
  63.     End Sub  
  64.   
  65.   
  66.     ' RichTextBox1 Key Down event  
  67.     '  
  68.     '         * when key  {  is pressed and {} is inserted in richTextBox  
  69.     '         * and isCurslyBracesKeyPressed is true then insert some blank text to RichTextBox1  
  70.     '         * when Enter key is down  
  71.     '         * it will look like this when Enter key is down  
  72.     '           
  73.     '             {  
  74.     '                   |  
  75.     '             }          
  76.     '            
  77.     '         *   
  78.   
  79.     Private Sub RichTextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles RichTextBox1.KeyDown  
  80.         Dim sel As Integer = RichTextBox1.SelectionStart  
  81.         If e.KeyCode = Keys.Enter Then  
  82.             If isCurslyBracesKeyPressed = True Then  
  83.                 RichTextBox1.Text = RichTextBox1.Text.Insert(sel, vbLf & "          " & vbLf)  
  84.                 e.Handled = True  
  85.                 RichTextBox1.SelectionStart = sel + "          ".Length  
  86.                 isCurslyBracesKeyPressed = False  
  87.             End If  
  88.         End If  
  89.     End Sub  
  90. End Class