OK、これが私が思いついたものです。ハック?たぶん、でもねえ、それは動作します。コンボボックスに曜日を入力して(ちょっと、何かが必要でした)、キープレスイベントを処理しました。キーを押すたびに、その単語がAutoCompleteSourceCollection内の単語の先頭と一致するかどうかを確認します。そうでない場合は、e.Handledをtrueに設定して、キーが登録されないようにします。
public Form5()
{
InitializeComponent();
foreach (var e in Enum.GetValues(typeof(DayOfWeek)))
{
this.comboBox1.AutoCompleteCustomSource.Add(e.ToString());
}
this.comboBox1.KeyPress += new KeyPressEventHandler(comboBox1_KeyPress);
}
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string text = this.comboBox1.Text + e.KeyChar;
e.Handled = !(this.comboBox1.AutoCompleteCustomSource.Cast<string>()
.Any(s => s.ToUpperInvariant().StartsWith(text.ToUpperInvariant()))) && !char.IsControl(e.KeyChar);
}
編集: .Net 3.5を使用している場合は、System.Linqを参照する必要があります。.NET 2.0を使用している場合は、代わりにこれを使用してください。
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string text = this.comboBox1.Text + e.KeyChar;
foreach (string s in this.comboBox1.AutoCompleteCustomSource)
{
if (s.ToUpperInvariant().StartsWith(text.ToUpperInvariant()))
{
return;
}
}
e.Handled = true;
}