VB问题:用me.hide隐藏窗口后用me.show显不出来,怎么办??

2024-11-17 19:51:16
推荐回答(5个)
回答1:

这个问题要完美解决最好用API,首先说快捷键部分,最好注册全局热键,这样不论你窗体是否具有焦点都可以随意隐藏显示
窗体的显示隐藏用SetWindowPos
注册热键用RegisterHotKey
单键的热键用GetAsyncKeyState
我做过个程序你可以参考

如有问题可以消息我

http://tieba.baidu.com/f?kz=346258333
此程序可以对任意窗口进行显示、隐藏、永在最上、关闭等操作
支持热键。任何状态下按小键盘区的"+","-","*"可以隐藏、关闭、显示所选窗口。

两种热键技术
组合热键可以使隐藏状态的本程序窗口显示(具有防热键冲突功能)
单键热键可以操作选中的任意窗口

系统通知栏图标

窗体模块
frmMain 程序主窗口

标准模块
APIStuff 管理系统通知栏图标(添加、删除、菜单管理)
CommDlgs 不使用控件的公用对话框
HotKey 组合热键管理
modMain 主模块

回答2:

新建一个Form2,输入代码
Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = 101 Then
Form1.Show
End If

If KeyAscii = 121 Then
Form1.Hide
End If

End Sub

然后运行Form2,再按键就可以了

回答3:

你这是只针对当前焦点窗口的热键。。
如果Form1隐藏了,就等于失去焦点了。。
所以按热键无效的。

建议去找下写捕获键盘命令的代码。

回答4:

添加一个计时器 Timer1
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long

Private Sub Form_Load()
Timer1.Interval = 10
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
'检查是否热键被按下
If GetAsyncKeyState(vbKeyY) Then Me.Hide
If GetAsyncKeyState(vbKeyE)Then Form1.Show
End Sub

回答5:

隐藏之后,Form失去焦点,当然不会响应KeyPress事件。要首先获得焦点才行!