找回密码
 立即注册

QQ登录

只需一步,快速开始

shizuka

银牌会员

6

主题

39

帖子

3208

积分

银牌会员

积分
3208

活字格认证

shizuka
银牌会员   /  发表于:2011-8-10 09:28  /   查看:6068  /  回复:6
ComboBoxCell按F4时下拉能不显示吗?
我想让光标落到别的地方。但总是有下拉框显示。

6 个回复

倒序浏览
robert
金牌服务用户   /  发表于:2011-8-10 10:55:00
沙发
能说的具体点吗?在什么情况下,你希望按F4不显示下拉框?为什么这种情况下你又必须要按F4这个键呢?
回复 使用道具 举报
shizuka
银牌会员   /  发表于:2011-8-10 11:08:00
板凳
客户要求按F4时光标落到其他控件上,但是当光标在 ComboBoxCell上时按F4,下拉也显示了出来,光标也落到了其他控件上。
ShortcutKeyManager.Unregister(Keys.F4)不好用。
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2011-8-10 12:00:00
地板
那”按F4把光标落在其他控件上“的逻辑是在什么地方写的呢?MultiRow的KeyDown事件?
回复 使用道具 举报
shizuka
银牌会员   /  发表于:2011-8-10 12:07:00
5#
嗯,是KeyDown事件,在KeyDown事件中写
If e.KeyCode = Keys.F4 Then
            Me.txt.Focus()
但下拉列表也显示出来了。
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2011-8-10 14:28:00
6#
建议在Form里重写ProcessKeyPreview方法实现你的需求,看是否可以?

  1. Protected Overrides Function ProcessKeyPreview(ByRef m As Message) As Boolean
  2.         Dim WM_KEYDOWN As Integer = 256
  3.         If m.Msg = WM_KEYDOWN Then
  4.                 '115 is F4
  5.                 If (CInt(m.WParam) = 115) Then
  6.                         Me.txt.Focus()
  7.                         Return True
  8.                 End If
  9.         End If
  10.         Return MyBase.ProcessKeyPreview(m)
  11. End Function
复制代码
回复 使用道具 举报
shizuka
银牌会员   /  发表于:2011-8-10 15:18:00
7#
哦。还以为能有个什么属性直接能解决呢。
谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部