using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace CommonLibrary { //============================================================================= // // 时间:2017-03-08 12:41:37 // 用于耗时操作的提醒 // //============================================================================= /// /// 用于稍微耗时事件处理时的消息框提醒 /// public partial class FormMatterRemind : Form { #region Constructor /// /// 实例化一个耗时处理的对象 /// /// 需要显示的文本描述 /// 需要操作的方法 public FormMatterRemind( string description, Action action ) { InitializeComponent(); Description = description; DealWithResult = action; DoubleBuffered = true; Icon = UserSystem.GetFormWindowIcon(); } #endregion #region Paint Support private void FormDownloading_Paint(object sender, PaintEventArgs e) { //绘制显示 e.Graphics.DrawLines(pen_dash, new Point[] { new Point(44,44), new Point(14,44), new Point(14,14), new Point(44,14), new Point(44,44), }); //画边框 e.Graphics.DrawRectangle(Pens.LightGray, new Rectangle(0, 0, Width - 1, Height - 1)); } #endregion #region Form Load Show private void FormDownloading_Load(object sender, EventArgs e) { pen_dash.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom; pen_dash.DashPattern = new float[] { 5, 5 }; pen_dash.DashOffset = 0; time.Interval = 38;//2017-03-08 13:20:33 time.Tick += Time_Tick; label1.Text = Description; } private void FormDownloading_Shown(object sender, EventArgs e) { time.Start(); System.Threading.Thread thread = new System.Threading.Thread(ThreadRequestServer); thread.IsBackground = true; thread.Start(); } #endregion #region Time Tick private void ThreadRequestServer() { //后台请求数据 System.Threading.Thread.Sleep(100); DealWithResult(); Invoke(new Action(() => { time.Stop(); System.Threading.Thread.Sleep(20); Dispose(); })); } private void Time_Tick(object sender, EventArgs e) { Pen_Offect--; if (Pen_Offect < -5) Pen_Offect = 4; pen_dash.DashOffset = Pen_Offect; Invalidate();//引发重画 } #endregion #region Private Members //定时块 private Timer time = new Timer(); private Pen pen_dash = new Pen(Color.Green); private float Pen_Offect = 0; private Action DealWithResult = null; private string Description = string.Empty; #endregion } }