0

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

4

2 回答 2

0

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

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

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

这种方法的优点:
- 使用大量数据,用户将更容易找到他/她需要的东西。
- 检查输入值是否属于数据集或强制属于的较少代码。
- 无需验证。

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

于 2012-11-26T14:49:27.993 回答
0

尝试类似:

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

if (foundSome)
   //Do some action

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

于 2012-11-26T14:13:23.513 回答