拥有计时功能的进度条控件
1.使用Visual Studio创建一个Windows窗体控件库项目TimeProgressBar。Windows控件库类型的项目其实就一个类库,只不过其中存放的主要是可视化的控件,这些控件可以被放置到Visual Studio的工具箱中。
2.将Visual Studio自动生成的UserControl1.cs文件改名为“TimeProgressBar.cs”,Visual Studio会自动更改自定义控件的类名为TimeProgress。从工具箱上拖一个Timer控件和一个ProgressBar控件到自定义控件TimeProgressBar的设计视图中,设置ProgressBar的Dock属性为Fill,Timer控件的Interval属性为1000,如图所示。
3.下面为TimeIsUp事件定义一个委托:
public delegate void TimeIsUpDelegate(); //委托
//接着为此自定义控件定义“TimeIsUp”事件
public event TimeIsUpDelegate TimeIsUp; //自定义控件的“TimeIsUp”事件
在使用此控件时,程序员可调用它的SetTimeSpan方法设置计时时间长度:
public void SetTimeSpan(int second)
{
ElapsedTime = 0;
TotalTime = second;
progressBar1.Maximum = second;
timer1.Enabled = true;
}
真正的计时工作有Timer控件完成,Timer控件每隔1秒(因为其Interveral属性设为1000)调用一个Begin方法,在在方法中完成计时工作,当时间到时,激发TimeIsUp事件,其代码如下:
private void Begin(object sender, EventArgs e)
{
ElapsedTime++; //计算已流逝的时间
progressBar1.Value = ElapsedTime; //设置进度条刻度以显示时间流逝状态
if (ElapsedTime >= TotalTime) //时间到了
{
timer1.Enabled = false; //停止计时
if (TimeIsUp != null)
{
TimeIsUp(); //激发事件
}
}
}
自定义控件开发完成以后,运行生成一个TimeProgressBar.dll文件,即可以在其它项目中使用。
4. 向解决方法中增加一个新的Windows应用程序项目Use,生成解决方案,在工具箱中右键鼠标点击选择项,弹出选择工具项对话框,点击浏览,找到刚刚生成的TimeProgressBar.dll文件,点击确定。此时,工具箱中就添加了我们自定义的TimeProgressBar控件。
现在即可将此控件拖到窗体上设计用户界面,并且在其属性窗口中可以看到自定义的事件TimeIsUp已经出现在“事件”面板中。
完整代码如下:
public partial class Use : Form
{
public Use()
{
InitializeComponent();
}
private void m_btn_Set_Click(object sender, EventArgs e)
{
timeProgressBar1.SetTimeSpan(Convert.ToInt32(numericUpDown1.Value));
}
private void timeProgressBar1_TimeIsUp()
{
MessageBox.Show("时间到!");
}
}