1

我正在设置一个 ComboBox 以使用 AutoComplete 功能,其中 AutoCompleteMode = Append 和 AutoCompleteSource = ListItems。当我加载表单时,ComboBox 的项目列表为空,然后我继续在指定事件(按下特定按钮时)从 ComboBox.Text 添加新值。

底线是,当 ComboBox 的 Items 属性从事件动态填充时,AutoCompletion 不会按预期工作。我第一次进入 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