Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合框-自动完成+;免费打字_C#_Wpf_Combobox_Autocomplete - Fatal编程技术网

C# 组合框-自动完成+;免费打字

C# 组合框-自动完成+;免费打字,c#,wpf,combobox,autocomplete,C#,Wpf,Combobox,Autocomplete,如果用户正在输入的内容在项目列表中,我希望我的组合框能够启用自动完成,如果它不存在,我希望将它包括在我的列表中 例如: 包含以下项目的组合框:“摇滚、乡村、爵士乐”。 如果用户开始键入“Ro…”,组合框将自动完成“Rock”。但是如果用户键入“Blues”,我想将其添加到我的项目中。所以它就像:“摇滚、乡村、爵士乐、布鲁斯” 我该怎么做?您可以使用自动完成模式和自动完成源进行自动完成 comboBox1.AutoCompleteMode = AutoCompleteMode.Append; co

如果用户正在输入的内容在项目列表中,我希望我的组合框能够启用自动完成,如果它不存在,我希望将它包括在我的列表中

例如:

包含以下项目的组合框:“摇滚、乡村、爵士乐”。 如果用户开始键入“Ro…”,组合框将自动完成“Rock”。但是如果用户键入“Blues”,我想将其添加到我的项目中。所以它就像:“摇滚、乡村、爵士乐、布鲁斯”


我该怎么做?

您可以使用自动完成模式自动完成源进行自动完成

comboBox1.AutoCompleteMode = AutoCompleteMode.Append;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
或者,在选择组合框后,可以通过Visual Studio中的“属性”面板执行此操作

用于向组合框添加新项目

  private void comboBox1_TextChanged(object sender, EventArgs e)
    {
        if (!comboBox1.Items.Contains(comboBox1.Text))
        {
            comboBox1.Items.Add(comboBox1.Text);
            comboBox1.Items.RemoveAt(comboBox1.Items.Count - 2);
        }
    }

您可以使用自动完成模式自动完成源自动完成

comboBox1.AutoCompleteMode = AutoCompleteMode.Append;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
或者,在选择组合框后,可以通过Visual Studio中的“属性”面板执行此操作

用于向组合框添加新项目

  private void comboBox1_TextChanged(object sender, EventArgs e)
    {
        if (!comboBox1.Items.Contains(comboBox1.Text))
        {
            comboBox1.Items.Add(comboBox1.Text);
            comboBox1.Items.RemoveAt(comboBox1.Items.Count - 2);
        }
    }

如果我使用MVVM来做这件事,我会从一个组合框开始,并根据需要修改它

如果您在
DevExpress
中使用内置的
组合框
,您几乎可以免费获得此功能。只需在下拉列表中填入要自动完成的项目,然后设置以下选项:

  • 自动下拉(因此,当您开始键入时,它将自动下拉匹配项列表)
  • 按匹配项筛选列表(即下拉列表中唯一与您键入内容匹配的项)
  • 部分匹配(即,您键入的内容将过滤下拉列表,在任何地方,甚至在中间都有匹配项)
如果你想变得更有趣,你可以编写一个服务来监听用户当前在框中输入的内容,然后根据需要调整下拉列表。将自动显示下拉列表中与用户类型匹配的任何项目。我将使用无功扩展(RX)和
油门
来执行此操作,请参见:


如果我使用MVVM做这件事,我会从一个组合框开始,然后根据需要修改它

如果您在
DevExpress
中使用内置的
组合框
,您几乎可以免费获得此功能。只需在下拉列表中填入要自动完成的项目,然后设置以下选项:

  • 自动下拉(因此,当您开始键入时,它将自动下拉匹配项列表)
  • 按匹配项筛选列表(即下拉列表中唯一与您键入内容匹配的项)
  • 部分匹配(即,您键入的内容将过滤下拉列表,在任何地方,甚至在中间都有匹配项)
如果你想变得更有趣,你可以编写一个服务来监听用户当前在框中输入的内容,然后根据需要调整下拉列表。将自动显示下拉列表中与用户类型匹配的任何项目。我将使用无功扩展(RX)和
油门
来执行此操作,请参见:


请注意,我与
DevExpress
没有任何关联,它只是我熟悉的一个。Telerik也是一个非常优秀的图书馆,毫无疑问,他们也有类似的地方。请注意,我与
DevExpress
没有任何关联,它只是我熟悉的一个。Telerik也是一个很好的图书馆,毫无疑问他们也有类似的东西。