自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#使用委托調(diào)用實(shí)現(xiàn)用戶端等待閃屏

開發(fā) 后端
程序開發(fā)難免會(huì)有大數(shù)據(jù)量操作,在操作大量數(shù)據(jù)時(shí),有時(shí)候需用戶等待。在這一段時(shí)間內(nèi)既不想讓用戶點(diǎn)其它操作,那么我們就用一個(gè)等待閃屏告訴用戶,這程序還在運(yùn)行。

  以前總在博客園看別人寫的博客,這是我第一次寫技術(shù)博客,竟然不知道如何開始。在此向博客園里各位辛勤耕耘的各位博主致敬。

  我以前開發(fā)Asp.net 程序較多,少有接觸WinForm。最近調(diào)換了工作,也有機(jī)會(huì)接觸WinForm.首先做WinForm的感覺像是客場作戰(zhàn),好多東西都不大熟悉。所以要加強(qiáng)努力。

  廢話少說,進(jìn)入正題。首先說說場景:

  程序開發(fā)難免會(huì)有大數(shù)據(jù)量操作,在操作大量數(shù)據(jù)時(shí),有時(shí)候需用戶等待,在這一段時(shí)間內(nèi)既不想讓用戶點(diǎn)其它操作,又不像讓用戶感覺程序假死了。怎么辦?對,就是要需使用一個(gè)等待的閃屏,告訴用戶"數(shù)據(jù)讀取中"旁邊還有一個(gè)gif動(dòng)畫在轉(zhuǎn)動(dòng)。等到完成操作時(shí),閃屏自動(dòng)關(guān)閉。

  接下來看看效果:

  可能會(huì)有很多同學(xué)笑我了:這么簡單的東西,還拿出來寫?簡單是簡單了點(diǎn)兒,可是對于一個(gè)WinForm不熟悉的人來說卻也費(fèi)了不少周章。

  再接下來是實(shí)現(xiàn)方式

  1、簡單的實(shí)體類。(PS:因?yàn)槭莻€(gè)小Demo 這個(gè)實(shí)體就沒怎么加注釋,^_^)

 

  1.   usingSystem;  
  2.   usingSystem.Collections.Generic;  
  3.   usingSystem.Linq;  
  4.   usingSystem.Text;  
  5.   usingSystem.ComponentModel;  
  6.   usingSystem.Collections;  
  7.   namespaceDemo  
  8.   {  
  9.   publicclassProduct  
  10.   {  
  11.  publicintProductID { set;get;}  
  12.   publicstringProductName { set;get;}  
  13.   publicintCount { set;get;}  
  14.   publicdoublePice { set;get;}  
  15.   publicstringUint { set;get;}  
  16.   }  
  17.   } 

 

  2、等待閃屏:相對簡單,沒有代碼。在窗體上拖了一個(gè)Lable控件 和一個(gè)PictureBox,把Lable的Text屬性設(shè)置為:“數(shù)據(jù)讀取中”并且改了一下字體樣式,給PictureBox裝載一個(gè)gif圖像

  3、主窗體:在主窗體上拉個(gè)網(wǎng)格控件(本Demo使用Developer Express的網(wǎng)格控件)、一個(gè)按鈕:把按鈕的Text屬性改為 “讀取”、一個(gè)BindingSource,

  下面看主窗體的實(shí)現(xiàn)代碼

 

  1.   usingSystem;  
  2.   usingSystem.Collections.Generic;  
  3.   usingSystem.ComponentModel;  
  4.   usingSystem.Data;  
  5.   usingSystem.Drawing;  
  6.   usingSystem.Text;  
  7.   usingSystem.Windows.Forms;  
  8.   usingDevExpress.XtraEditors;  
  9.   usingSystem.Data.Linq;  
  10.   usingSystem.Threading;  
  11.   namespacedevDemo  
  12.   {  
  13.   publicpartialclassFormMain : Form  
  14.   {  
  15.   publicFormMain()  
  16.   {  
  17.   InitializeComponent();  
  18.   }  
  19.   frmLoading loading = newfrmLoading();//閃屏窗體  
  20.   #region委托  
  21.   ///<summary>  
  22.   ///關(guān)閉閃屏///</summary>  
  23.  publicdelegatevoidCloseloading();  
  24.   ///<summary>  
  25.   ///綁定數(shù)據(jù)///</summary>  
  26.   ///<param name="ls">數(shù)據(jù)列表</param>  
  27.  publicdelegatevoidBindedData(List<Product> ls);  
  28.   #endregion  
  29.   privatevoidFormMain_Load(objectsender, EventArgs e)  
  30.   {  
  31.   }  
  32.   ///<summary>  
  33.   ///讀取按鈕點(diǎn)擊事件///</summary>  
  34.  privatevoidbutton1_Click(objectsender, EventArgs e)  
  35.   {  
  36.   newAction(ReadData).BeginInvoke(newAsyncCallback(CloseLoading), null);  
  37.   loading.ShowDialog();//顯示loading  
  38.   }  
  39.   ///<summary>  
  40.   ///讀取數(shù)據(jù)///</summary>  
  41.   publicvoidReadData()  
  42.   {  
  43.   List<Product> productList = newList<Product>();  
  44.   //裝載模擬數(shù)據(jù)  
  45.   for(inti = 0;i <15;i++)  
  46.   {  
  47.   productList.Add(newProduct  
  48.   {  
  49.   ProductID = i + 1,  
  50.   Count = newRandom().Next(i * 10, 3000/ (i + 1)),  
  51.   Pice = System.Math.Round(newRandom().NextDouble() * (i + 1) * 100, 4),  
  52.   Uint = "只",  
  53.   ProductName = string.Format("產(chǎn)品{0}", i)  
  54.   });  
  55.  Thread.Sleep(200);//每添加一條記錄休息200毫秒  
  56.   }  
  57.   this.Invoke(newBindedData((pls) => {  
  58.   //綁定數(shù)據(jù)  
  59.  this.protuctBindingSource.DataSource = pls;  
  60.   }),productList);  
  61.   }  
  62.   ///<summary>  
  63.   ///關(guān)閉loading///</summary>  
  64.   ///<param name="ar"></param>  
  65.   publicvoidCloseLoading(IAsyncResult ar)  
  66.   {  
  67.   this.Invoke(newCloseloading(() => { loading.Close(); }));  
  68.   }  
  69.   }  
  70.   } 

 

  至此這個(gè)Demo完成.若有不足之處,或是有更好的方式,歡迎提出。

  另外,寫技術(shù)博客真不容易。佩服那些一直更新自己博客的老師們。

原文鏈接:http://www.cnblogs.com/james2010/archive/2011/12/21/2296531.html

【編輯推薦】

  1. 詳解C#中不同類的類型
  2. 淺談C#中標(biāo)準(zhǔn)Dispose模式的實(shí)現(xiàn)
  3. C#選擇正確的集合進(jìn)行編碼
  4. C# 4.0新特性:協(xié)變與逆變中的編程思想
  5. C#應(yīng)用Attribute特性 代碼統(tǒng)計(jì)分析
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-08-21 11:24:16

C#異步調(diào)用

2024-05-16 12:33:37

C#編程指針

2009-08-20 18:37:52

委托C#異步委托

2009-10-20 16:48:30

C#委托

2009-09-08 15:28:24

C#委托

2009-08-07 13:55:35

Java客戶端類調(diào)用C# WebServi

2009-08-18 10:35:26

C#委托

2024-12-23 08:00:00

委托C#編程

2011-04-22 09:14:26

C#委托

2009-09-01 18:36:35

C#委托實(shí)例

2010-01-28 17:12:45

Android閃屏

2009-08-27 16:53:01

C#委托C#事件

2010-12-22 10:21:17

C#基礎(chǔ)

2024-05-16 13:36:04

C#委托事件

2013-03-15 10:37:08

C#

2009-12-23 10:46:38

WPF實(shí)現(xiàn)用戶界面

2009-08-03 13:23:04

C#編程組件-事件-委托

2009-09-08 16:25:19

C#委托

2024-05-15 09:11:51

委托事件C#

2009-12-30 09:45:52

Silverlight
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)