AutoCompleteMode = Append および AutoCompleteSource = ListItems で AutoComplete 機能を使用するように ComboBox を設定しています。フォームをロードすると、ComboBox の項目リストが空になり、指定されたイベント (特定のボタンが押されたとき) で ComboBox.Text から新しい値を追加し続けます。
要するに、ComboBox の Items プロパティがイベントから動的に設定されると、オートコンプリートが期待どおりに機能しないということです。ComboBox.Items への最初のエントリは常に正しく完了しますが、後のエントリは完了しません。矢印をクリックしてリストをドロップダウンすると、これまでのすべてのアイテムが正しくオートコンプリートされました。別のアプリケーションで Alt-Tab を押してコンボボックスに戻ると、これまでに入力したすべての項目が適切にオートコンプリートされます。
コンボボックスが何らかのイベントに基づいてオートコンプリートリストを内部的にリロードすることがわかりましたが、これまでのところ呼び出しを試みました
ResumeLayout(true);
Refresh();
Invalidate(true);
Update();
DroppedDown = true;
DroppedDown = false;
しかし無駄に
ComboBox.Items リストにエントリを動的に追加し、ComboBox.AutoCompleteSource = ListItems でオートコンプリートを正しく機能させる方法について教えてもらえますか。
btnExecute は、コンボボックスを含むフォームのデフォルト ボタンです。したがって、コンボボックスでEnterキーを押すと、以下の関数が呼び出されます
private void btnExecute_Click( object sender, EventArgs e ) {
cboCommand.SuspendLayout();
cboCommand.Items.Add(cboCommand.Text);
cboCommand.Text = "";
// Make some call here, so combobox reloads its cache for autocompletion
}
自動生成された winforms コードの関連部分
this.cboCommand.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
this.cboCommand.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.cboCommand.FormattingEnabled = true;
Windows Vista で .NET4 クライアント プロファイルを使用しています。ここで役割を果たしているのかもしれません
誰?