当前位置:编程学习 > VB >>

vb中按下空格载入Form2,松开空格销毁Form2

vb中按下空格载入Form2,松开空格销毁Form2

在线等,高手们发一下源码。谢谢。 自己顶一下。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
     If KeyCode = 32 Then Form2.Show 0, Form1
     Form1.SetFocus
     
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
     If KeyCode = 32 Then Unload Form2
     
End Sub

这种问题都能提,还嫌我提的太简单不愿回答 form1 添加一个Timer, interval:50

Form1代码:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Timer1_Timer()
form2_loaded = IsWindow(Form2.hWnd_)
If GetKeyState(vbKeySpace) And &H80 Then '按键按下
 If Not form2_loaded Then Form2.Show , Me
Else
 If form2_loaded Then Unload Form2
End If
End Sub


Form2代码:
Public hWnd_ As Long

Private Sub Form_Load()
hWnd_ = hwnd
End Sub
2个事件搞定 2楼正解,学习 没试过,不过我觉得二楼的代码可能有问题, 因为新开的窗体显示出来, 如果用户鼠标点了一下新窗体,使之获得焦点后,原来的窗体就无法捕获放开按键的事件. 
因为楼主的问题比较特殊, 新开的窗体只存在于按下松开按钮之间, 我想楼主可能是想用新窗体来显示一个什么用户提示信息之类的东西, 如果真是这样的话,可以用一个PICTURE或FRAME之类的容器控件,中间放上LABEL等来显示, 只要将该控件的EDABLE设为FALSE, 按钮松开的事件就不会受到干扰了. 并且为了防止用户鼠标点到原来窗体的其他控件, 也要把其他控件也都DISABLE掉 你到底想干什么啊? 结合2楼和7楼的想法,可以考虑把KeyUp事件也放在form2中一份。 坟
帖 2楼的正解。顺路学习学习 代码是

Dim Form2 As Form

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Set Form2 = New Form1
Form2.Show
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form2.Hide
End Sub
在MouseDown中的Set语句将Form2这个变量设定为一个新的Form1,然后显示出来。 补充一下:如果是按键盘键就把时间分别改成KeyDown和KeyUp,如:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Set Form2 = New Form1
If KeyCode = vbKeySpace Then
Form2.Show
End If
End Sub
引用 7 楼 wallescai 的回复:
没试过,不过我觉得二楼的代码可能有问题, 因为新开的窗体显示出来, 如果用户鼠标点了一下新窗体,使之获得焦点后,原来的窗体就无法捕获放开按键的事件. 
因为楼主的问题比较特殊, 新开的窗体只存在于按下松开按钮之间, 我想楼主可能是想用新窗体来显示一个什么用户提示信息之类的东西, 如果真是这样的话,可以用一个PICTURE或FRAME之类的容器控件,中间放上LABEL等来显示, 只要将该控件的ED……


难道你不知道窗体也有个Enabled属性吗?2F只是给了个框架,以示可以实现这样的功能。有点智商的都知道应该怎么做了吧?
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,