如何强制用户将建议的条目带入ComboBox?

我希望用户从ComboBox中选择一个值。 必须在用户的文本输入中建议条目。

我是否必须使用事件来强制System.Windows.Forms.ComboBox包含来自其自己的DataSource的值?

示例:必须向用户建议条目…如果我写“CO”,组合应建议“CONGO”和“COLOMBIA”,但用户只能输入其中一个值。 用户不应该引入“COfdfgdfg”或任何随机字符串。

谢谢!

您必须使用combobox.autocompletemode来获取名称liek Congo,当用户输入“CO”这样的文本时会议

你可以将自己的数据源改为comboBox1.AutoCompleteSource

  this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBox1.FormattingEnabled = true; this.comboBox1.Location = new System.Drawing.Point(113, 192); this.comboBox1.Name = "comboBox1"; this.comboBox1.Size = new System.Drawing.Size(121, 20); 

然后使用覆盖ToString方法的对象填充combox项源

 public class POCLRO { public int ID { get; set; } public string Name { get; set; } public override string ToString() { return Name; } } 

编辑:您必须对用户在combobox中输入的文本进行validation,如果用户选择auto completemode建议的下拉项,则validation返回true,否则返回false …

做下面的事……

为combobox创建一个KeyDown事件处理程序并检查Enter键。 请注意,在用户点击输入后,选择combobox中的文本(如选择,就像您正在进行剪切或复制操作一样)并且焦点保留在combobox中。

如果输入被按下,则调用validation函数,如果输入的值与存储在数据库中的名称相等,它将执行您认为必要的任何操作…

您可以在Leave事件处理程序中调用此相同的函数,以防止用户在进行有效选择之前离开combobox。

  private void ComboBox_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { ValidateSelection(); } } private bool validation() { // do validation here } private void ComboBox_Leave(object sender, EventArgs e) { if(!ValidateSelection()) { ComboBox.Focus(); } } 

将combobox的样式设置为ComboBoxStyle.DropDownList