【问题标题】:Creating an autocomplete textbox with dropdown使用下拉菜单创建自动完成文本框
【发布时间】:2016-03-30 08:35:07
【问题描述】:

我的问题:

我有一个包含 118 个化学元素名称的列表。我希望创建一个文本框,当我在其中键入时,它会抛出一个带有名称建议的下拉菜单。我在winforms中制作了这个文本框,它是小菜一碟,但是我在wpf中制作它的努力是徒劳的。我已经尝试过扩展的 wpf 工具包、nimgoble 和其他一些自动完成文本框库。到目前为止死路一条……我也是 wpf 的新手,所以也许我在这些库中遗漏了一些东西?我不能让他们列出我的项目,有些甚至不会显示下拉菜单。

这就是我想要的:

这是我最终实现它的方法:

所以我通过结合使用文本框和列表框解决了这个问题。在文本框用户类型和更改时(文本框更改事件),它正在检查包含所有 118 个元素名称的列表中的匹配项,并在列表框中显示输入文本的匹配项。代码如下:

private void textBox_TextChanged(object sender, TextChangedEventArgs e)
    {

        listBox.Items.Clear();


        if (textBox.Text.Trim() != "")
        {
            string regexPattern = (textBox.Text.ToString()) + "\\w*";
            regexPattern = char.ToUpper(regexPattern[0]) + regexPattern.Substring(1); //prvo slovo veliko

            Match match = Regex.Match(ElementNames.allElements, regexPattern);
            while (match.Success && match.Value != "")
            {
                listBox.Items.Add(match.Value.ToString());
                listBox.Visibility = Visibility.Visible;

                match = match.NextMatch();
            }
        }

            if (listBox.Items.IsEmpty || listBox.Items.Count == 119)
            {
                listBox.Visibility = Visibility.Collapsed;
                if (listBox.Items.Count == 119) listBox.Items.Clear();
            }

        HighlightElementsOnTable();
        OtherButtonsHighlight();
        BringBackColors();
    }

【问题讨论】:

  • 我建议开始非常简单。使用 text changed 事件查看用户输入的内容。然后打印出您想要显示的结果。如果这可行,您可以开始添加弹出/下拉菜单以显示结果...
  • @FeDe 谢谢,我使用文本框和列表框的组合解决了这个问题,并在触发 textbox_changed 并在列表框中列出匹配项时找到匹配项。也有人会介意投票或其他事情,因为我在这个问题上的代表不好,并且阻止我成为该网站的进一步成员。非常感谢..:)
  • 试着改变你的一些问题。也许添加您想要的图片,将其构造更多,添加一部分 oyu 尝试过的内容,我相信您会得到一些支持:D
  • @FeDe 在这里也许会得到一些支持:D
  • :D 认为这会有所帮助 :D

标签: wpf autocompletebox


【解决方案1】:

您可以将ComboBoxIsEditable=true 一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2018-04-27
    相关资源
    最近更新 更多