如何强制用户将建议的条目输入到组合框中

本文关键字:输入 组合 用户 何强制 | 更新日期: 2023-09-27 18:11:16

我想让用户从ComboBox中选择一个值。条目必须在用户的文本输入中提示

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

示例:条目必须被建议给用户…如果我输入"CO",组合应该提示"刚果"answers"哥伦比亚",但用户只应该输入其中一个值。用户不应该引入"COfdfgdfg"或任何随机字符串。

谢谢!

如何强制用户将建议的条目输入到组合框中

设置组合框的样式为ComboBoxStyle。DropDownList

您必须使用组合框。当用户输入像"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;
  }
}

编辑:你必须对用户在组合框中输入的文本进行验证,如果用户选择了auto completemode建议的下拉项,则验证返回true,否则返回false…

做如下…

为组合框创建KeyDown事件处理程序,并检查Enter键。请注意,在用户点击输入后,组合框中的文本被选中(就像在做剪切或复制操作一样被选中),焦点仍然在组合框中。

如果按了enter键,调用验证函数,如果输入的值与数据库中存储的名称相等,则执行您认为必要的操作…

您可以在Leave事件处理程序中调用相同的函数,以防止用户在做出有效选择之前离开组合框。

 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();
    }
 }