首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读1890次
VB中一个容易忽视的问题---ME.ENABLE

相信许多VB编程人员对ME.ENABLE非常熟悉了,http://www.shengfang.org根据微软的MSDN说明:返回或设置一个值,该值用来确定一个窗体或控件是否能够对用户产生的事件作出反应,每每我们需要进行一些时间较长的后台操作的时候,都习惯于开始加入ME.ENABLE=FALSE语句,使用户不能对窗体进行操作,以避免干扰,最后再加入ME.ENABLE=TRUE语句,http://www.shengfang.org将窗体的控制交还给用户。

 
 
但是这种方法其实并不可靠,请看如下示例:

首先我新建一个VB工程,http://www.shengfang.org在窗体加入一个按钮,加入如下代码:

Private Sub Command1_Click()

MsgBox "Command1_Click"

Me.Enabled = False

End Sub

运行工程后,点击按钮,http://www.shengfang.org确定弹出的对话框,这时无论你怎样点击鼠标,按钮都没有反应了,看到这里,你也许会奇怪,这不是很正常吗?

且慢,你有没有注意到按钮其实并非处于非激活状态(没有变灰),并且由于鼠标的点击,正处于选中状态(按钮周围有一圈黑点),http://www.shengfang.org只要你轻轻的按下空格键或者回车键,呵呵,是不是又看到了弹出的对话框?

这下你没话说了,不急,还不仅仅只有空格键这个问题,你试一试用鼠标点击窗体的关闭的按钮,没有反应,对吧,不要吃惊,你再按下“ALT+F4”组合键试一试,呵呵,窗体照样关闭了吧。

也许这个属性http://www.shengfang.org只是屏蔽的窗体对鼠标的反应,而并没有考虑到对键盘按键的屏蔽,下面是我对这两个问题的解决方法。
Public Sub FormEnable(f As Form, b As Boolean)

‘参数分别传递窗体对象以及设置窗体有效或无效http://www.shengfang.org

Dim i As Integer

f.Enabled = b

For i = 0 To f.Controls.Count – 1  

‘遍历窗体的所有控件

    If TypeOf f.Controls(i) Is CommandButton Then

       ‘如果控件类型是按钮,设置ENABLE属性http://www.shengfang.org

        f.Controls(i).Enabled = b

    End If

Next

If b Then

    Screen.MousePointer = 0  ‘默认鼠标指针

Else

    Screen.MousePointer = 11‘等待鼠标指针

End If

‘设置窗体的鼠标指针类型

End Sub

现在我们改写代码如下:

Private Sub Command1_Click()

MsgBox "Command1_Click"

FormEnable Me, False

End Sub

仍然按下按钮,确定弹出的对话框后,http://www.shengfang.org这时所有的按钮都已经是变灰了,无论怎样点击鼠标、敲击空格键或者回车键,都不会再有对话框弹出了。
ALT+F4问题

二、ALT+F4问题
 
 
Private Sub Form_Unload(Cancel As Integer)

If Me.Enabled = False Then

    Cancel = -1

    Exit Sub

End If

End Sub

当窗体被关闭时,会产生UNLOAD事件,这时判断窗体的属性,http://www.shengfang.org如果现在窗体是无效的,那么就取消关闭操作。

这时再次运行程序,如果没有点击按钮,按下ALT+F4键,仍然可以正常可以关闭窗体,如果已经点击按钮,那么再按下ALT+F4键就不会有反应了。http://www.shengfang.org

虽然现在WINDOWS基本已经是鼠标的操作了,但是键盘仍然不可忽视,尤其我们进行编程的时候一定要仔细考虑到键盘,以免产生不必要的错误。
 http://www.shengfang.org


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/vb6meenable.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1111037569

2005年3月17日13:32星期四  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 16||用户: 2563 [列表]
今日:701||到访:2682340
Rss:841983||评论:1585

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8