[英]How to code a generic ComboBox to force a user to select a suggested entry?
[英]How to force a user to take a suggested entry into a ComboBox?
我希望用户从ComboBox中选择一个值。 必须在用户的文本输入中建议条目。
我是否必须使用事件来强制System.Windows.Forms.ComboBox
包含来自其自己的DataSource
的值?
示例:必须向用户建议条目...如果我写“CO”,组合应该建议“CONGO”和“COLOMBIA”,但用户只能输入其中一个值。 用户不应该引入“COfdfgdfg”或任何随机字符串。
谢谢!
将组合框的样式设置为ComboBoxStyle.DropDownList
您必须使用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 ...
做下面的事......
为组合框创建一个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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.