c# winForm 等待表單的實現

來源:互聯網
上載者:User

標籤:sys   按鈕   rip   out   cte   src   sdn   安全   end   

最近在做一個項目,需要用到等待表單,在DevExpress下面有SplashScreen控制項可以使用,同時也有ProgressIndicator控制項能用,但是如果沒有用Dev開發的話,我們就需要自訂一個等待表單了。

 

首先,把放上來:

實現的功能比較簡單,就是在程式處理 一些耗時比較多的代碼時,將Loading表單展示給使用者,並在後台進行執行。

 

這個程式,參考了 網名為 “八哥” 的一個程式,當時我在群裡面的時候,感謝他的熱情協助。

現將My Code貼出來吧,裡面用的了委託的概念。大家如果不懂的話,可以百度一下,這裡給出幾個連結:

http://blog.csdn.net/ggz631047367/article/details/44646233

http://www.runoob.com/csharp/csharp-delegate.html

http://blog.csdn.net/sjj2011/article/details/7835200

http://blog.csdn.net/testcs_dn/article/details/37671513

LoadingControl.cs代碼如下:

  1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Data;  5 using System.Drawing;  6 using System.Linq;  7 using System.Text;  8 using System.Windows.Forms;  9 using System.Threading; 10  11 namespace ControlToolsLibrary 12 { 13     public partial class LoadingControl : Form 14     { 15  16         public delegate void mydelegate(); 17         public mydelegate eventMethod; 18         private static LoadingControl pLoading = new LoadingControl(); 19         delegate void SetTextCallback(string title,string caption,string description); 20         delegate void CloseFormCallback(); 21         public LoadingControl() 22         { 23             InitializeComponent(); 24             initLoadintForm(); 25             Thread t = new Thread(new ThreadStart(delegateEventMethod)); 26             t.IsBackground = true; 27             t.Start(); 28         } 29  30         private void LoadingControl_FormClosing(object sender, FormClosingEventArgs e) 31         { 32             if (!this.IsDisposed) 33             { 34                 this.Dispose(true); 35             } 36         } 37  38         private void initLoadintForm() { 39             this.ControlBox = false;   // 設定不出現關閉按鈕 40             this.StartPosition = FormStartPosition.CenterParent; 41         } 42  43         private void delegateEventMethod() 44         { 45             eventMethod(); 46         } 47  48         public static LoadingControl getLoading() 49         { 50             if (pLoading.IsDisposed) 51             { 52                 pLoading = new LoadingControl(); 53                 return pLoading; 54             } 55             else 56             { 57                 return pLoading; 58             } 59         } 60  61         //這種方法示範如何線上程安全的模式下調用Windows表單上的控制項。   62         /// <summary> 63         /// 設定Loading 表單的 標題title,標籤 caption 和描述 description 64         /// </summary> 65         /// <param name="title">視窗的標題[為空白時,取預設值]</param> 66         /// <param name="caption">標籤(例如:please wait)[為空白時,取預設值]</param> 67         /// <param name="description">描述(例如:正在載入資源...)[為空白時,取預設值]</param> 68         public void SetCaptionAndDescription(string title,string caption, string description) 69         { 70             if (this.InvokeRequired&&LoadingControl.lbl_caption.InvokeRequired && LoadingControl.lbl_description.InvokeRequired) 71             { 72                 SetTextCallback d = new SetTextCallback(SetCaptionAndDescription); 73                 this.Invoke(d, new object[] { title,caption, description }); 74             } 75             else 76             { 77                 if (!title.Equals("")) { 78                     this.Text = title; 79                 } 80                 if (!caption.Equals("")) 81                 { 82                     LoadingControl.lbl_caption.Text = caption; 83                 } 84                 if (!description.Equals("")) { 85                     LoadingControl.lbl_description.Text = description; 86                 } 87             } 88         } 89  90         public  void CloseLoadingForm() 91         { 92             if (this.InvokeRequired) 93             { 94                 CloseFormCallback d = new CloseFormCallback(CloseLoadingForm); 95                 this.Invoke(d, new object[] {  }); 96             } 97             else 98             { 99                 if (!this.IsDisposed)100                 {101                     this.Dispose(true);102                 }103             }104         }105 106         public void SetExecuteMethod(mydelegate method)107         {108               this.eventMethod += method;109         }110 111 112     }113 }
View Code

Form的調用的方法如下:

 

c# winForm 等待表單的實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.