当用户退出autoCompleteMode文本c#时,如何停止输入文本

时间:2012-11-26 13:28:15

标签: c# winforms

我使用AutoCompleteMode到我的文本框。它会将银行名称附加到我的文本框中。因此,当我开始使用第一个字母输入时,所有带有第一个字母的银行名称将来到我的文本框的下拉列表中。现在我的问题是 如果用户尝试访问不属于我的下拉列表的数据,则用户不应该访问该文本。所以我希望用户只能托管现有的银行名称。 我使用AutoCompleteCustomSource到文本框下拉。

2 个答案:

答案 0 :(得分:0)

尝试类似:

bool foundSome = false;
foreach (var bankName in col)
{
foundSome = bankName.StartsWith(textBox.text);
}

if (foundSome)
   //Do some action

您可以在“验证”中编写此代码,以便为在txtbox中插入的每个字符进行预处理。

答案 1 :(得分:0)

实现您需要的最佳方法是使用1个文本框和1个组合框。他们都应该指向同一个集合。

如您所述,文本框将以自动完成模式运行。键入后,组合框值将设置为您的集合中的第一个匹配值。如果没有值匹配 - 组合框值应设置为null或默认数据 Combobox将仅存储相应的数据子集,不可能编辑所选文本。

验证和数据检索将从Combobox值完成。

这种方法的优点:
  - 使用大量数据,用户可以更轻松地找到他/她需要的内容   - 较小的代码,用于检查输入值是属于数据集还是强制归属   - 无需验证。

可能的缺点:
  - 形式上的另一个控制   - 应实现同步文本框文本和组合框集合的逻辑。