相信许多VB编程人员对ME.ENABLE非常熟悉了,根据微软的MSDN说明:返回或设置一个值,该值用来确定一个窗体或控件是否能够对用户产生的事件作出反应,每每我们需要进行一些时间较长的后台操作的时候,都习惯于开始加入ME.ENABLE=FALSE语句,使用户不能对窗体进行操作,以避免干扰,最后再加入ME.ENABLE=TRUE语句,将窗体的控制交还给用户。
但是这种方法其实并不可靠,请看如下示例:
首先我新建一个VB工程,在窗体加入一个按钮,加入如下代码:
Private Sub Command1_Click()
MsgBox "Command1_Click"
Me.Enabled = False
End Sub
运行工程后,点击按钮,确定弹出的对话框,这时无论你怎样点击鼠标,按钮都没有反应了,看到这里,你也许会奇怪,这不是很正常吗?
且慢,你有没有注意到按钮其实并非处于非激活状态(没有变灰),并且由于鼠标的点击,正处于选中状态(按钮周围有一圈黑点),只要你轻轻的按下空格键或者回车键,呵呵,是不是又看到了弹出的对话框?
这下你没话说了,不急,还不仅仅只有空格键这个问题,你试一试用鼠标点击窗体的关闭的按钮,没有反应,对吧,不要吃惊,你再按下“ALT+F4”组合键试一试,呵呵,窗体照样关闭了吧。
也许这个属性只是屏蔽的窗体对鼠标的反应,而并没有考虑到对键盘按键的屏蔽,下面是我对这两个问题的解决方法。