C# 组合框自动完成自定义功能

C# 组合框自动完成自定义功能,c#,winforms,C#,Winforms,如何扩展WinForm ComboBox的自动完成功能,例如,使用正则表达式查找项目的匹配项,或者为了简单起见查找包含输入文本的项目?查找与用户键入内容最匹配的现有列表项目,您可以将组合框上的属性设置为AutoCompleteMode.Append,并将属性设置为AutoCompleteSource.ListItems 如果您想使用更复杂的逻辑来执行自动完成,请查看如何处理TextChanged事件 Windows窗体中的自动完成模式(到目前为止)不支持使用正则表达式进行筛选或从中间进行匹配。它

如何扩展WinForm ComboBox的自动完成功能,例如,使用正则表达式查找项目的匹配项,或者为了简单起见查找包含输入文本的项目?

查找与用户键入内容最匹配的现有列表项目,您可以将组合框上的属性设置为AutoCompleteMode.Append,并将属性设置为AutoCompleteSource.ListItems


如果您想使用更复杂的逻辑来执行自动完成,请查看如何处理TextChanged事件

Windows窗体中的自动完成模式(到目前为止)不支持使用正则表达式进行筛选或从中间进行匹配。它只支持前缀过滤

键入时重置自动完成选项的API是iautompletedropdown::ResetEnumerator。您需要在TextChanged事件中调用它。
在Windows Vista或更高版本上,您可以使用ACO_NOPREFIXFILTERING调用IAutoComplete2::SetOptions来禁用前缀过滤。

您能提供一个示例吗?请参见盛江蒋晟, 我已成功设置了NONPREFIX选项(0x100),但调用autoCompleteObject2.ResetEnumerator()会引发AccessViolation。我添加了Int32 ResetEnumerator();连接到接口。如何修复?我已成功设置了NONPREFIX选项(0x100),但调用autoCompleteObject2.ResetEnumerator()会引发AccessViolation。我添加了Int32 ResetEnumerator();连接到接口。如何修复它?这可能正确,也可能不正确,这取决于您是否具有preservesig属性。