public class MyComboBoxAutoComplete : MyComboBox { #region Declarations private bool InEditMode = true; #endregion #region Constructor public MyComboBoxAutoComplete() { this.DropDownStyle = ComboBoxStyle.DropDown; this.AutoCompleteMode = AutoCompleteMode.SuggestAppend; this.AutoCompleteSource = AutoCompleteSource.ListItems; } #endregion #region Events protected override void OnBindingContextChanged(EventArgs e) { this.DropDownStyle = ComboBoxStyle.DropDown; base.OnBindingContextChanged(e); } protected override void OnValidating(CancelEventArgs e) { int index = this.FindStringExact(this.Text); if (index >= 0 || this.Text.Trim() == "") base.OnValidating(e); else e.Cancel = true; } protected override void OnKeyDown(KeyEventArgs e) { this.InEditMode = (e.KeyCode != Keys.Back && e.KeyCode != Keys.Delete); base.OnKeyDown(e); } protected override void OnTextChanged(EventArgs e) { if (this.InEditMode) { int index = this.FindString(this.Text); if (index < 0 && this.Text.Trim() != "") { this.InEditMode = false; this.Text = this.Text.Substring(0, this.Text.Length - 1); this.InEditMode = true; this.Select(this.Text.Length, this.Text.Length); } } base.OnTextChanged(e); } #endregion }~~Bonnie