【问题标题】:How do I make the autocomplete list for a TextBox editable?如何使 TextBox 的自动完成列表可编辑?
【发布时间】:2010-10-31 03:48:12
【问题描述】:

我有一个应用程序,其中包含许多使用自动完成功能的 TextBox 控件。每个人都使用AutoCompleteMode.CustomSource 从关联的AutoCompleteStringCollection 中获取自动完成文本。

每当用户在TextBox 中输入一个新值时,它都会被添加到关联的AutoCompleteStringCollection,并且在会话结束时,所有这些集合都将保存到用户主目录中的一个文件中。

问题在于无法纠正这些集合中的错误。在 IE 中,带有自动完成控件的输入控件可让您滚动到自动完成列表中的某个项目,然后按 Del 将其删除。这在 .NET 控件中不起作用。

我真的很想避免为此实现我自己的 UI。我卡住了吗?有没有办法启用我没有看到的这个?

【问题讨论】:

  • 请原谅我的天真,但您是如何获得建议的?我在开发自动完成方面的唯一经验是通过 ASP.NET AJAX 工具包,并且由于该组件从 Web 服务获取建议,我认为没有办法对其进行编辑。但当然我可能是错的。
  • 他使用的是 Windows Forms,而不是 ASP.NET,它内置了对 AutoComplete 的支持,来自各种来源

标签: c# .net textbox autocomplete


【解决方案1】:

开箱即用,不幸的是,没有什么可以为您做这件事。我尝试 P/Invoking the basic FindWindowEx / EnumChildWindows 以查看是否可以获取实际下拉列表的句柄,但没有成功(如果有人确实成功了,请告诉我!)。好消息是(不太好,但也不可怕)自动完成实际上并不是您完全必须自己实现的东西,实际上有一个名为 SHAutoComplete 的 Win32 函数可以被 P/Invoked 以帮助您完成自动完成。不要太兴奋,因为它并不像 P/Invoking 并完成它那么简单。不过,有一个很棒的 CodeProject article 应该可以帮到您。

【讨论】:

  • 那是一篇出色的文章,谢谢。这显然需要一些挖掘。
猜你喜欢
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
相关资源
最近更新 更多