【发布时间】:2010-05-10 23:08:22
【问题描述】:
在 VB6 中,如果包含字母数字数据的列表框具有焦点并且按下了字符键,则列表框中以该字符开头的第一个元素将被突出显示。如果按下多个字符,则在每次按下字符后选择以每个字符开头的第一个元素。键入 M-A-R-T 将选择第一个 M-word,然后是第一个 A-word,依此类推。
我想做的是编写一个算法,使用多个字符串动态搜索列表框。因此,键入 M-A-R-T 将突出显示以 M-A-R-T 开头的第一个元素。 “Sorted”属性已经做到了这一点,但我的列表框在一个使用自定义排序方法的包装器中,如果打开了 Sorted,该方法就会损坏。
我已经编写了所有代码来搜索列表框,并且它可以正常工作,只是默认的搜索行为仍在发生。当我按 M 时,第一个 M 字被突出显示。然后我按A,第一个A字被高亮显示。当我释放 A 时,第一个 M-A 单词被突出显示。然后我按 R,第一个 R 字被突出显示。然后我释放 R 并且第一个 M-A-R 单词被突出显示。所以行为是我想要的,除了在 Keydown 和 Keyup 事件之间的某处进行了额外的搜索。
有没有办法禁用或屏蔽默认的列表框搜索行为?还是锁定滚动条使系统无法滚动?
【问题讨论】: