我正在设置一个 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 客户端配置文件。也许它在这里发挥了作用
任何人?