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;
}
}
}
}
|