c# - 在 C# 中,使用自定义源时出现文本框问题

标签 c# autocomplete textbox

在 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;
        }
    }
}       

最佳答案

该段不应位于 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 事件留空。自动完成将为您完成所有工作。

关于c# - 在 C# 中,使用自定义源时出现文本框问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106140/

相关文章:

c# - 如何在 C# 中将 Dictionary<string, object> 转换为 Dictionary<string, string>

c# - 防止对非托管代码中使用的托管引用进行垃圾回收

c# - 分离 POCO 类后尝试从数据库更新 EDMX 时出现 COMException

javascript - jQuery AutoComplete 字段不起作用,我该如何修复它?

c# - 自动调整文本框中的字体大小

c# - 使用最小起订量 : mock object throwing 'TargetParameterCountException'

javascript - Angular Material 自动完成加载动画不会停止

javascript - 我怎样才能在 Javascript 的文本框中将文本对齐到右侧....???默认是左对齐

c# - WPF 中 TextBox 的 BorderThickness(错误?)

javascript - jquery 自动完成延迟不起作用