亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

我的雞肋條之一: 仿CWaitCursor的應用

系統 1821 0

?? 在MFC中有這樣一個類CWaitCursor。功能雖小,但是做UI的時候卻是從來不會少用的。以至于用VC的時候會用自制的繼承于CWaitCursor的CXXXWaitCursorEx類,用VB的時候,會自己做一個CWaitCursor,。。。。。。
?? # 有關CWaitCursor的定義以及它本身的意義,如果您不清楚請參閱相關文檔或者Google一下。
?? # 應該很快就可以找到。

?? 到了.NET的時代,因為析構函數沒有辦法按照程序員的意愿在指定的時間發生,我似乎沒有想的就在很早前否定了這個功能。其實在很早的時候也已經知道了Using這個東西,可惜事情沒有經過大腦,只是想當然的,外加工作中也不用.NET,失之交臂。

?? 終于讓我有機會在今天想起來這件事情,簡單的做了一小段代碼。

using ?System;
using ?System.Windows.Forms;

namespace ?Change.UI?
{
????
public ? class ?WaitCursor?:?System.IDisposable
????
{

????????
private ?Form?_target;
????????
private ? bool ?_enabled;
????????
private ?Cursor?_cur;

????????
public ?WaitCursor?(?Form?target?)
????????
{
????????????_target?
= ?target;
????????????_enabled?
= ?_target.Enabled;
????????????_cur?
= ?_target.Cursor;

????????????_target.Enabled?
= ? false ;
????????????_target.Cursor?
= ?Cursors.WaitCursor;

????????}


????????
public ? void ?Dispose()
????????
{
????????????
this .Release();
????????}


????????
private ? void ?Release()
????????
{
????????????
if (? ! (_target? == ? null )?)
????????????
{
????????????????_target.Enabled?
= ?_enabled;
????????????????_target.Cursor?
= ?_cur;
????????????}

????????}

????}

}


使用方法:

???????? private ? void ?button1_Click( object ?sender,?System.EventArgs?e)
????????
{
????????????
using (Change.UI.WaitCursor?wc? = ? new ?Change.UI.WaitCursor( this ))
????????????
{
????????????????DateTime?dt;
????????????????dt?
= ?DateTime.Now;
????????????????
while ( true )
????????????????
{
????????????????????System.TimeSpan?diff?
= ?DateTime.Now.Subtract(dt);
????????????????????
if ?(?diff.Seconds? > ? 3 ?)
????????????????????????
return ;
????????????????}

????????????}

????????}


注: 至于為什么不用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中應該是一樣的。作為解決辦法一直以來我都是這樣做的。

if ?(?XXXX? == ?System.String.Empty?)
{
????XXXX.Focus();
????
return ;
}

using ?(?Change.UI.WaitCursor?wc? = ? new ?Change.UI.WaitCursor( this )?)
{
????
}

我的雞肋條之一: 仿CWaitCursor的應用


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩在线视频不卡 | 中文字幕三级理论影院 | 亚洲免费成人在线 | 99热久久这里只有精品6 | 国产免费播放 | 不卡的| 久久免费视频播放 | 五月婷婷激情 | 手机看片高清国产日韩片 | 美女美女高清毛片视频 | 亚洲精品欧洲一区二区三区 | 深夜影院在线视频观看 | 国产精品夜夜春夜夜爽久久 | 日本一级毛片免费播 | 国外免费一级 | 天天操夜夜操 | 精品香蕉一区二区三区 | 一区二区在线免费观看 | 久草午夜 | 欧美不卡在线观看 | 成人交性视频免费看 | 国产亚洲精品成人一区看片 | 亚洲图片天堂 | 91精品啪在线观看国产色 | 久久综合九色婷婷97 | 亚洲视频精品 | 神马我我不卡伦影视 | 12345国产精品高清在线 | 人人爱天天做夜夜爽88 | 久久精品一区二区三区日韩 | 天天干夜夜夜操 | 免费观看羞羞视频网站 | 七月婷婷精品视频在线观看 | 国产欧美精品三区 | 国产成人精品日本亚洲语言 | 成人综合网站 | 久久久久琪琪免费影院 | 日本一区二区免费视频 | 国产一区在线观看视频 | 四虎色姝姝影院www 四虎色影院 | 久久久久久久国产精品影院 |