窗体hide后,如何令其可见,如何实现show出来后,执行一个操作?
------------------------------
一个窗体unload后,如果再show,必须会执行load事件,所以我可以在load事件中写代码,
但是如果一个窗体 hide 后,再次 show 出来时,它不再执行 load 事件了,
我想实现,窗体每 show 一次,都会执行相应的代码,在哪种事件中写代码呢?
------------------------------
一个窗体unload后,如果再show,必须会执行load事件,所以我可以在load事件中写代码,
但是如果一个窗体 hide 后,再次 show 出来时,它不再执行 load 事件了,
我想实现,窗体每 show 一次,都会执行相应的代码,在哪种事件中写代码呢?
主要是想实现窗体上表格内容的实时更新,一个窗体hide后,再show出来,窗体显示的还是hide前的表格内容信息,我想每 show 一次,执行更新表格内容的代码。
你在窗体中添加一个定时器控件(Timer)编写定时器事件,让其定时刷新窗体界面数据即可。
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1000
Label1.Caption = "0"
End SubPrivate Sub Timer1_Timer()
Label1.Caption = (Val(Label1.Caption) + 1) Mod 100
End Sub
1、在工程中插入一个用户控件,然后控件中导出Show事件,然后把控件放到窗口上,
再通过那个用户控件导出的Show事件处理过程。
2、在窗口的Paint事件中处理,通过一个公共变量识别是否需要处理
如:
Dim IsShow As Long
...
me.Hide
IsShow = 0
...Private Sub Form_Paint()
if IsShow=0 Then
IsShow = 1
'你的处理过程
End If
End Sub复杂点的方法:
用钩子过程来接收 WM_SHOWWINDOW 消息,当收到改消息的时候处理你的过程
怪了,每次用这个事件,都感到莫名的问题,所以不用了。 怪的是,在这个事件中写代码,功能是从服务器取数据填充表格,窗体显示有极明显延迟,但是同样的代码,在load事件中执行就没问题,所以比较怪,找不到原因。
Static HS As Boolean
If Me.Visible Then
If HS = False Then
HS = True
MsgBox "me show"
'Form_Load
End If
Else
If HS Then
HS = False
MsgBox "me hide"
End If
End If
End Sub定时器你定个100毫秒,估计够用了,这个绝不会增加很多额外负担
Sub Timer1_timer()
Static HS As Boolean
If Me.Visible Then
If HS = False Then
HS = True
MsgBox "me show"
'Form_Load
End If
Else
If HS Then
HS = False
MsgBox "me hide"
End If
End If
End Sub