Components C#

using System;
using System.Windows.Forms;
using System.Drawing;
public class AutoCompleteComboBoxTest : System.Windows.Forms.Form {
   public AutoCompleteComboBoxTest(){
        AutoCompleteComboBox combo = new AutoCompleteComboBox();
        combo.Location = new Point(10,10);
        this.Controls.Add(combo);
        combo.Items.Add("Aaaaaa");
        combo.Items.Add("Bbbbbbbbb");
        combo.Items.Add("Ccccccccccc");
   }
   public static void Main(){
       Application.Run(new AutoCompleteComboBoxTest());
   } 
}
public class AutoCompleteComboBox : ComboBox {
    private bool controlKey = false;
    protected override void OnKeyPress( System.Windows.Forms.KeyPressEventArgs e) {
        base.OnKeyPress(e);
        if (e.KeyChar == (int)Keys.Escape) {
            this.SelectedIndex = -1;
            this.Text = "";
            controlKey = true;
        } else if (Char.IsControl(e.KeyChar)) {
            controlKey = true;
        } else {
            controlKey = false;
        }
    }
    protected override void OnTextChanged(System.EventArgs e) {
        base.OnTextChanged(e);
        if (this.Text != "" && !controlKey) {
            string matchText = this.Text;
            int match = this.FindString(matchText);
            if (match != -1) {
                this.SelectedIndex = match;
                this.SelectionStart = matchText.Length;
                this.SelectionLength = this.Text.Length - this.SelectionStart;
            }
        }
    }
}