开发拥有自定义事件的控件(一)

版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/IntegralforLove/article/details/83050386

拥有计时功能的进度条控件

 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("时间到!");
    }
}

猜你喜欢

转载自blog.csdn.net/IntegralforLove/article/details/83050386
今日推荐