Mega Code Archive

 
Categories / C# / Components
 

Auto Complete ComboBox

using System;   using System.Drawing;   using System.Collections;   using System.ComponentModel;   using System.Windows.Forms;   using System.Data;   public class Form1 : System.Windows.Forms.Form   {     private AutoCompleteComboBox combo;      public Form1()     {       this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);       this.ClientSize = new System.Drawing.Size(292, 273);       combo = new AutoCompleteComboBox();       combo.Location = new System.Drawing.Point(64, 32);       combo.Size = new System.Drawing.Size(150, 20);             combo.Items.Add("Aaaaaa");             combo.Items.Add("Bbbbbbbbb");             combo.Items.Add("Ccccccccccc");              Controls.Add(combo);       CenterToScreen();     }     static void Main()      {       Application.Run(new Form1());     }   }          public class AutoCompleteComboBox : System.Windows.Forms.ComboBox     {         public event System.ComponentModel.CancelEventHandler NotInList;         private bool strict = true;         private bool isEditing = false;         public AutoCompleteComboBox() : base() {         }         public bool Strict         {             get { return strict; }             set { strict = value; }         }         protected virtual void OnNotInList(System.ComponentModel.CancelEventArgs e)         {             if (NotInList != null)             {                 NotInList(this, e);             }         }            protected override void OnTextChanged(System.EventArgs e)         {             if (isEditing)             {                 string input = Text;                 int index = this.FindString(input);                 if (index >= 0)                 {                     isEditing = false;                     SelectedIndex = index;                     isEditing = true;                     Select(input.Length, Text.Length);                 }             }             base.OnTextChanged(e);         }         protected override void OnValidating(System.ComponentModel.CancelEventArgs e)         {             if (this.Strict)             {                 int pos = this.FindStringExact(this.Text);                          if (pos == -1)                 {                     OnNotInList(e);                 }                 else                 {                     this.SelectedIndex = pos;                 }             }             base.OnValidating(e);         }         protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)         {             isEditing = (e.KeyCode != Keys.Back && e.KeyCode != Keys.Delete);             base.OnKeyDown(e);         }     }