在c#中,我有一个带有listView自动完成源的文本框。 当我输入密钥时,文本框会填充该建议。 当我从列表中选择任何一个建议的文本时,它的工作正常。 但是当我尝试使用键盘(向下箭头)在填充列表中向下移动时,文本框中的文本将替换为列表中的第一个项目。我无法移动到列表中的第二项。
private void textbox1_TextChanged(object sender, EventArgs e)
{
if (textbox1.Text != "")
{
TreeNode treeNode = TreeNode;
string text = textbox1.Text;
Boolean isContain = false;
foreach (TreeNode subNode in treeNode.Nodes)
{
if (subNode.Name.StartsWith(text))
{
if (subNode.Name.StartsWith(text))
suggestStageName.Add(subNode.Name);
isContain = true;
if (subNode.Name.Equals(textbox1.Text))
do corresponding event
}
}
if (isContain)
{
textbox1.AutoCompleteCustomSource = suggestStageName;
textbox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textbox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
}
答案 0 :(得分:3)
此段不应位于textChanged事件中。你应该只分配一次。
textbox1.AutoCompleteCustomSource = suggestStageName;
textbox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textbox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
编辑:
试试这个:
private void Form1_Load(object sender, EventArgs e)
{
AutoCompleteStringCollection suggestStageName = new AutoCompleteStringCollection();
foreach (TreeNode subNode in treeNode.Nodes)
{
suggestStageName.Add(subNode.Name);
}
textBox1.AutoCompleteCustomSource = suggestStageName;
textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
将textChanged事件留空。 AutoComplete将为您完成所有工作。