我在文本框(实际上是ToolStripTextBox)上使用了自动完成属性。这是工作正常,除非它不显示,直到我键入至少一个字符。我如何做到这一点,即使文本框是空的,这些建议也会显示出来?如何使TextBox上的自动完成显示空时的建议
Mode = Suggest
Source = CustomSource
来源progamatically设置和限制为10个项目
另外,如果有人知道如何迫使建议就可能是一个解决办法
我在文本框(实际上是ToolStripTextBox)上使用了自动完成属性。这是工作正常,除非它不显示,直到我键入至少一个字符。我如何做到这一点,即使文本框是空的,这些建议也会显示出来?如何使TextBox上的自动完成显示空时的建议
Mode = Suggest
Source = CustomSource
来源progamatically设置和限制为10个项目
另外,如果有人知道如何迫使建议就可能是一个解决办法
在.net api中没有这种可能性。在.net内部使用的shell接口的IAutoComplete中更多不存在这种可能性。
所以你应该忍受它,或实施你自己的自动完成行为,而不使用默认行为。你可以使用前面提到的组合框下拉菜单,甚至创建自己的自动完成控件(在我的应用程序中,我选择了最后一个变体)。
中的OnEnter事件编程表明我不知道,如果有任何解决方案,特别是因为如果您删除TextBox
中的所有文本,建议框将自动关闭。
一种解决方法可能是有ComboBox
重叠TextBox
,你可以有一个显示所有的选项,但如果选择了其中的一个,或者如果事情是输入你自动切换到TextBox
和显示,来代替。
虽然我建议在这种情况下,我可能会考虑完全摆脱TextBox
,并坚持使用ComboBox
,因为这就是它的原因。
要在ComboBox
看SendMessage
API和消息CB_SHOWDROPDOWN
编程显示下拉(如果我没记错的话,你可以使用相同的API /消息,但使用不同的参数以编程方式关闭它,如果这是需要的为好)。
考虑到这是一个黑客。我设法解决了这个问题,并且缺乏API功能来做一件微不足道的事情。我会用代码告诉你:
dim source as AutoCompleteStringCollection = new AutoCompleteStringColection()
dim values() as String = new String() {" Monday", _
" Tuesday", _
" Wednesday", _
" Thursday", _
" Friday", _
" Saturday", _
" Sunday" }
TextBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
TextBox1.AutoCompleteCustomSource = source
也就是说,在自动完成列表中的每个字符串前面加一个空格。然后,这是你对这个事实的了解,并将其用于你方便的目标。
例如,您可以在单击,聚焦等时在TextBox
中添加空格(注意,这可以用任何字符完成)。想法是要知道自动完成列表中的每个字符串都以相同的字符开头)
你必须意识到这一点。实际上,考虑扩展TextBox
表单并管理输入字符串的正确修剪。
再次,这个建议或不是由你自己决定。这个答案往往会解决的问题是想要一个TextBox
下降的建议列表,而不开始键入API的限制,也称为解决方法或丑陋的。
注意:如果您对文本内容进行了正确的修改,效果会更好。 – Sebastian 2012-07-12 21:24:51
有趣的方法。您可能还需要防止用户删除前导空间。当然比实现自己的自动完成行为容易得多。 – 2012-07-13 07:39:02
确实。我的'ExtendedTextBox'所做的是使用'AutoCompletCustomSource'或提供的'RegEx'验证输入(我可以使用'ComboBox',但我重用了一个扩展的文本框,它提供了一个图标来提供关于输入的视觉反馈) 。 当丢失焦点并且没有有效输入时,我清除文本。当输入并且没有有效的输入时,清除文本'My.Computer.keyboard.SendKeys(“”)'和'Sendkeys.flush()'。 获取输入字符串的属性确实如此:'TextBox1.Text.TrimStart(“”)' 同样,输入必须谨慎处理。 – Sebastian 2012-07-13 20:05:07
它使用您当前的输入来减少显示的可能性列表。如果你没有在文本框中输入任何内容,那么可能的列表是无限的。如果它不是无限的(因为你有一个有限的列表),那么也许你应该考虑使用自动完成组合框代替? – slugster 2010-07-06 11:16:36
我的设置始终限制为最多10个 – 2010-07-06 11:28:40