【发布时间】:2009-01-13 18:56:14
【问题描述】:
我们的 WinForms 应用程序会延迟加载数据以自动完成文本框。其伪代码如下;
- TextBox 中的用户类型
- 在输入 pause 时,确定我们是否需要获取自动完成数据
- 在工作线程中,联系服务器并获取数据
- 调用回 UI 线程
- 设置
textBox.AutoCompleteCustomSource = fetchedAutoCompleteStringCollection; - 强制文本框下拉它的自动完成下拉菜单。
我目前在使用 #6 时遇到问题。作为一个 hack,我执行以下操作来模拟一个有效的按键,但它并非在所有情况下都有效。
// This is a hack, but the only way that I have found to get the autocomplete
// to drop down once the data is returned.
textBox.SelectionStart = textBox.Text.Length;
textBox.SelectionLength = 0;
SendKeys.Send( " {BACKSPACE}" );
一定有更好的方法。我不敢相信我是唯一一个异步获取自动完成数据的人。我该怎么做?
编辑: Win32 调用导致自动完成下拉是可以接受的。如果需要,我不介意 PInvoking。
【问题讨论】:
标签: .net winforms autocomplete