如何强制用户将建议的条目输入到组合框中
本文关键字:输入 组合 用户 何强制 | 更新日期: 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();
}
}