如何在form上按下shift键同时连续响应enter键?

zsge 2000-07-06 11:35:00
如何在form上按下shift键同时连续响应enter键?
我在form_keydown事件中检查按下shift键同时连续响应enter键,
第一次,按下shift时,form_keydown事件中shift=1,
当我按着shift不放时,第二次按下enter时,form_keydown事件中shift=0;
当我按着shift不放时,第三次按下enter时,form_keydown事件中shift=1;
不知何故?
在98下由此问题,在NT下好象没有这个问题。
...全文
257 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsge 2000-07-10
  • 打赏
  • 举报
回复
mafangsan,
If x <> 1 And KeyCode = vbKeyReturn Then
-------
x<>1,不明白 ?

我用 x<>-127 and x<>-128 来判断,shift键,
在nt下可以,
在98下,单独按下shift键和enter键,可以检测,
但按下shift键不放,在按下enter键,则光标在两个控件来回切换,不能成功。
zsge 2000-07-10
  • 打赏
  • 举报
回复
mafangsan,

你按下shift键不放,按下enter键,再松开,再按下,试试。
你用的是98还是nt?
nt下没问题,98下有问题。
mafangsan 2000-07-10
  • 打赏
  • 举报
回复
很正常,每次都会出现"good"
zsge 2000-07-10
  • 打赏
  • 举报
回复
mafangsan,

你按下shift键不放,然后按下enter键,再松开,再按下enter键试试。
mafangsan 2000-07-10
  • 打赏
  • 举报
回复
这段程序在我机器上很正常,只按enter每反应,按下shift再按enter就显示"good"
另外,通常情况下只有Tab键才可以让光标再在两个控件来回切换。现在你按下shift键不放,在按下enter键,则光标在两个控件来回切换,你有无对这几个控件用setfocus方法编程,你查查!
mafangsan 2000-07-07
  • 打赏
  • 举报
回复
你可以每次按下enter键时,用API函数检测shift键的状态,避免使用VB的shift参数来解决你的问题,源代码如下
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_SHIFT = &H10

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim x As Integer
x = GetKeyState(VK_SHIFT)
If x <> 1 And KeyCode = vbKeyReturn Then
MsgBox "good"
End If
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧