最近因为项目需要 做一个动态充电电池,电池用进度条(控件ProgressBar 来做的)
一,水平进度条的动态显示
1,直接将控件ProgressBar拖入Form中,或者自己定义,定义的代码如下:
private static ProgressBar m_processBar = new ProgressBar();
m_processBar.Location = new Point(88, 593);
m_processBar.Size = new Size(45, 81);
//当单击进度条时,执行方法ProgressBar_Click
m_processBar.Click += new System.EventHandler(this.ProgressBar_Click);
//将进度条添加到当前面板中
this.Controls.Add(m_processBar);
当然也可添加ProgressBar 属性->行为 下的任意事件。
2,m_processBar.Value的值用来表示进度条所显示的值,当然,这个值是在一定的范围内,这个范围用
m_progressBar.Maximum和m_progressBar.Minimum来限定,如果你不去定义它,它默认就是最通俗的范围0~100,
m_progresssBar的值是在范围内的。
3,动态的ProgressBar
一般最简单的做法就是使用定时器,但这样的做法明显也有一些不足之处,只利用简单的定时器做加法,用户其实掌握不了后台的进度,好一点的做法是使用一个整型变量来通过相应的算法计算出当前进度m_Value,然后通过定时器将这个值赋给
m_progressBar.Value = m_value,当然还有更好的办法,择优而选。
二,垂直进度条
近期的项目中需要做一个动态电池,就要显示充放电,水平进度条用起来显然不是很直观,需要垂直进度条出面了,在网上找了好久,发现最好用的就是这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Energy_Management_system
{
class VertivalProgressBar : ProgressBar
{
protected override CreateParams CreateParams
{
get
{
var para = base.CreateParams;
para.Style |= 0X04;
return para;
}
}
}
}
把它封装成一个类,并且直接用这个类来定义一个对象:
private static ProgressBar m_processBar = new ProgressBar();
m_processBar.Location = new Point(88, 593);
m_processBar.Size = new Size(45, 81);
//当单击进度条时,执行方法ProgressBar_Click
m_processBar.Click += new System.EventHandler(this.ProgressBar_Click);
//将进度条添加到当前面板中
this.Controls.Add(m_processBar);
于是,在相应位置出现垂直进度条
要做充电,用定时器就容易多了,m_progressBar.Value 在当前电量的基础上按一定值向上加,达到最大值时,再将当前电量赋给m_progressBar.Value,如此循环充电电池动态图就完成了,直观简单。
电池放电不需要动态,只需要使用定时器,不断刷新显示当前的电池电量值。
这样一个简单的电池充放电就完成了。