1

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 クライアント プロファイルを使用しています。ここで役割を果たしているのかもしれません

誰?

4

0 に答える 0