首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在列表框中键入时禁用动态搜索

在列表框中键入时禁用动态搜索
EN

Stack Overflow用户
提问于 2009-09-30 05:00:49
回答 2查看 1.2K关注 0票数 1

在VB6中,如果包含字母数字数据的列表框具有焦点并且按下了字符键,则列表框中以该字符开头的第一个元素将突出显示。如果按下多个字符,则在每次按下字符后,将选择以每个字符开头的第一个元素。键入M-A-R-T将选择第一个M字,然后选择第一个A字,依此类推。

我想要做的是编写一个算法,使用多个字符串动态搜索列表框。因此,键入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事件之间的某个地方进行了额外的搜索。

有没有办法禁用或屏蔽默认的列表框搜索行为?或者是锁定滚动条使系统无法滚动的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-30 09:55:46

自动滚动发生在KeyDown事件之后的某个时间。如果表单元素被禁用,它将不会注册任何键事件。所以我在我自己的过滤器后添加了这3行:

代码语言:javascript
运行
AI代码解释
复制
    mobjListBox.Enabled = False
    mobjListBox.Enabled = True
    mobjListBox.SetFocus

我猜当一个键第一次被按下时,VB6会提前计算出它将要调用的所有键事件。如果该控件被禁用,VB将重构要调用的按键事件列表。因此,通过禁用该控件,我强制VB从工作流中删除其他关键事件(如Scroll)。然后我再次启用该控件,并将焦点返回给它。

泰达!

票数 0
EN

Stack Overflow用户

发布于 2010-05-10 15:08:23

尝试添加以下内容:

代码语言:javascript
运行
AI代码解释
复制
Private Sub List1_KeyPress(KeyAscii As Integer)
    KeyAscii = 0
End Sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1497950

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文