我希望用户从ComboBox中选择一个值。必须在用户的文本输入中建议 条目。
我是否必须使用事件来强制System.Windows.Forms.ComboBox
包含自己DataSource
的值?
示例:必须向用户建议条目...如果我写“CO”,组合应该建议“CONGO”和“COLOMBIA”,但这些值中只有一个应该是由用户输入。用户不应该引入“COfdfgdfg”或任何随机字符串。
谢谢!
答案 0 :(得分:6)
将组合框的样式设置为ComboBoxStyle.DropDownList
答案 1 :(得分:4)
你必须使用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;
}
}
编辑:您必须对用户在组合框中输入的文本进行验证,如果用户选择auto completemode建议的下拉项,则验证返回true,否则返回false ... < / p>
执行以下操作......
为组合框创建一个KeyDown事件处理程序并检查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();
}
}