在MFC中有这样一个类CWaitCursor。功能虽小,但是做UI的时候却是从来不会少用的。以至于用VC的时候会用自制的继承于CWaitCursor的CXXXWaitCursorEx类,用VB的时候,会自己做一个CWaitCursor,。。。。。。
# 有关CWaitCursor的定义以及它本身的意义,如果您不清楚请参阅相关文档或者Google一下。
# 应该很快就可以找到。
到了.NET的时代,因为析构函数没有办法按照程序员的意愿在指定的时间发生,我似乎没有想的就在很早前否定了这个功能。其实在很早的时候也已经知道了Using这个东西,可惜事情没有经过大脑,只是想当然的,外加工作中也不用.NET,失之交臂。
终于让我有机会在今天想起来这件事情,简单的做了一小段代码。













































使用方法:


















注: 至于为什么不用Sleep等待结束,只是因为自己想尝试用一下TimeSpan。
上面的代码至少在我这里工作的还不错,但是有下面两个问题。
1. 在微软中文新闻组的DotNet.VB组(?)中有过类似的提问及解答。
问题:在设置Form的Enabled的时候,内部的控件也变灰了。
解决:使用
[DllImport("User32.dll")]
public static extern bool EnableWindow(IntPtr hWnd, bool bEnable);
2. 在Form被禁止使用的时候点击Button,那么这个事件会被存在消息队列中。
期望使用API可以解决这个问题,如果无法解决,不知道用.NET的方法要怎么样才能实时的响应该事件(也就是说让事件白发生?)
追记 [2004/09/16]
如果利用上面的方法在Using Block中查错并对某Control设置焦点的话,会出现无法设置的情况。这点与VC中应该是一样的。作为解决办法一直以来我都是这样做的。












