VB中一个容易忽视的问题---ME.ENABLE

ZDNet软件频道 时间:2002-10-25 作者:盛放 |  我要评论()
本文关键词:shengfang
VB的ME.ENABLE属性虽然说明是屏蔽窗体反应,但是这只是屏蔽了窗体对鼠标的反应,并没有屏蔽对键盘的操作,用户仍然可以通过回车键再次按下按钮或者通过ALT+F4关闭窗体。因此我把我的解决方法整理了一下,希望对VB程序员有点作用。

相信许多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”组合键试一试,呵呵,窗体照样关闭了吧。

也许这个属性只是屏蔽的窗体对鼠标的反应,而并没有考虑到对键盘按键的屏蔽,下面是我对这两个问题的解决方法。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134