想在自己程序的启动部分做一个漂亮的过度效果么?是不是见到别人的程序中在启动时候一个特漂亮的进度条似的东西,很是舒畅啊?下面这个东西,就是这个功能了,支持一个onComplete事件,你可以附加事件上去啦,还支持自定义进度条颜色、边框色、背景色。里面都有详细的注释,相信不用再怎么说明原理了。
usingSystem;
usingSystem.Drawing;
usingSystem.Windows.Forms;
namespaceYoker.Library.FormControl
{
/**////<summary>
///说明:进度条模拟类
///作者:Yoker.Wu
///原创地址:http://yoker.cnblogs.com/
///</summary>
publicpartialclassProgressBar:Control
{
组件设计器生成的代码#region组件设计器生成的代码
/**////<summary>
///必需的设计器变量。
///</summary>
privateSystem.ComponentModel.IContainercomponents=null;
/**////<summary>
///清理所有正在使用的资源。
///</summary>
///<paramname="disposing">如果应释放托管资源,为true;否则为false。</param>
protectedoverridevoidDispose(booldisposing)
{
if(disposing&&(components!=null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/**////<summary>
///设计器支持所需的方法-不要
///使用代码编辑器修改此方法的内容。
///</summary>
privatevoidInitializeComponent()
{
components=newSystem.ComponentModel.Container();
}
#endregion
publicProgressBar()
{
InitializeComponent();
}
重新覆盖父类的宽、高度#region重新覆盖父类的宽、高度
publicnewintWidth
{
set{base.Width=value>=5?value:5;}
get{returnbase.Width>=5?base.Width:5;}
}
publicnewintHeight
{
set{base.Height=value>=5?value:5;}
get{returnbase.Height>=5?base.Height:5;}
}
#endregion
进度条相关参数#region进度条相关参数
privateint_width;
privateintwidth
{
set{_width=value>(this.Width-4)?this.Width:value;base.Refresh();}
get{return_width;}
}
privateintheight
{
get{returnthis.Height-4;}
}
//颜色处理
privateColor_BorderColor=Color.FromArgb(132,161,201);
privateColor_BackgroundColor=Color.FromArgb(255,255,255);
privateColor_ProgressBarColor=Color.FromArgb(140,217,43);
publicColorBorderColor
{
set{_BorderColor=value;}
get{return_BorderColor;}
}
publicColorBackgroundColor
{
set{_BackgroundColor=value;}
get{return_BackgroundColor;}
}
publicColorProgressBarColor
{
set{_ProgressBarColor=value;}
get{return_ProgressBarColor;}
}
#endregion
publicdelegatevoidCompleteHandler(objectsender);
publiceventCompleteHandleronComplete;
/**////<summary>
///开始演示运行
///</summary>
publicvoidStart()
{
while(true)
{
if(width++>=this.Width-5)break;
System.Threading.Thread.Sleep(10);
}
onComplete(this);
}
protectedoverridevoidOnPaint(PaintEventArgspe)
{
base.OnPaint(pe);
//画外边框
pe.Graphics.DrawRectangle((newPen(this.BorderColor,1)),0,0,this.Width-1,this.Height-1);
//画内边距
pe.Graphics.FillRectangle(newSolidBrush(this.BackgroundColor),1,1,this.Width-2,this.Height-2);
//画进度条块
pe.Graphics.FillRectangle(newSolidBrush(this.ProgressBarColor),2,2,width,height);
}
}
}
要看效果么?使用下面的这个代码就可以啦。
usingSystem;
usingSystem.Windows.Forms;
namespaceYoker.Demo.ProgressBar
{
/**////<summary>
///在进度条上单击,开始演示。完成后,进度条增加一个双击事件,关闭窗体
///</summary>
classProgram
{
staticvoidMain(string[]args)
{
Formform=newForm();
form.FormBorderStyle=FormBorderStyle.None;
form.Width=320;
form.Height=30;
form.TopLevel=true;
form.StartPosition=FormStartPosition.CenterScreen;
Yoker.Library.FormControl.ProgressBarprogressbar=newYoker.Library.FormControl.ProgressBar();
progressbar.Width=form.Width;
progressbar.Height=form.Height;
progressbar.ProgressBarColor=System.Drawing.Color.DarkGreen;
progressbar.onComplete+=newYoker.Library.FormControl.ProgressBar.CompleteHandler(progressbar_onComplete);
progressbar.Click+=newEventHandler(progressbar_Click);
form.Controls.Add(progressbar);
form.ShowDialog();
}
staticvoidprogressbar_onComplete(objectsender)
{
Yoker.Library.FormControl.ProgressBarprogressbar=senderasYoker.Library.FormControl.ProgressBar;
progressbar.DoubleClick+=newEventHandler(form_DoubleClick);
}
staticvoidform_DoubleClick(objectsender,EventArgse)
{
Application.Exit();
}
staticvoidprogressbar_Click(objectsender,EventArgse)
{
Yoker.Library.FormControl.ProgressBarprogressbar=senderasYoker.Library.FormControl.ProgressBar;
progressbar.Start();
}
}
}
欢迎大家指正。
优质内容筛选与推荐>>
1、oracle-single row function2、焦油坑和人月神话--人月笔记13、C# 文件流操作 之 删除、复制、转移多个文件4、在线正则匹配替换5、Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。