【发布时间】:2011-09-24 06:08:28
【问题描述】:
我有一个组合框。 cmbx 里面有几百件物品。用户必须能够在 cmbx 中输入文本。当用户输入文本时,必须选择以输入值开头的项目。用户必须能够继续输入。
我尝试了下面的代码:
private void cmbGageCode_TextChanged(object sender, EventArgs e)
{
int itemsIndex = 0;
foreach (string item in cmbGageCode.Items)
{
if (item.Contains(cmbGageCode.Text))
{
cmbGageCode.SelectedIndex = itemsIndex;
}
itemsIndex++;
}
}
这将导致以下结果:当用户在 cmbx 中键入时,包含该值的项目被选中,并且光标位于文本的前面。这意味着每次插入 2 个字符时,都会选择一个项目,而我无法输入完整的值。
有没有人知道如何进行这项工作?也许我需要使用不同的控件?或者也许我正在以完全错误的方式解决这个问题?请帮忙!
【问题讨论】:
-
您是否尝试过使用内置的自动补全支持?当内置支持完全足够时,没有理由自己编写例程或使用第三方控件。
-
有一个不错的免费 c# autocomplete control 可用 (with source code) 很容易修改。