如何显示进度条
使用C#显示进度条,涉及到多线程编程,我只探索了使用BackgroundWorker和Thread的方法,下面分别列出。
第一种:使用BackgroundWorker进行进度条控制
BackgroundWorker对象有三个主要的事件:
DoWork - 当BackgroundWorker对象的多线程操作被执行时触发。
RunWokerCompleted - 当BackgroundWoker对象的多线程操作完成时触发。
ProgressChanged - 当BackgroundWorker对象的多线程操作状态改变时触发。
WorkerReportsProgress - 如果想让BackgroundWorker对象以异步的方式报告线程实时进度,必须将该属性的值设为true。
BackgroundWorker对象的ReportProgress方法用于向主线程返回后台线程执行的实时进度。
实例代码一,控制主窗体中的进度条显示
[csharp] view plaincopy
public partial class Form1 : Form
{
///
/// 后台线程
///
private BackgroundWorker bkWorker = new BackgroundWorker();
///
/// 步进值
///
private int percentValue = 0;
public Form1()
{
InitializeComponent();
bkWorker.WorkerReportsProgress = true;
bkWorker.WorkerSupportsCancellation = true;
bkWorker.DoWork += new DoWorkEventHandler(DoWork);
bkWorker.ProgressChanged += new ProgressChangedEventHandler(ProgessChanged);
bkWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompleteWork);
}
private void btnStart_Click(object sender, EventArgs e)
{
percentValue = 10;
this.progressBar1.Maximum = 1000;
// 执行后台操作
bkWorker.RunWorkerAsync();
}
public void DoWork(object sender, DoWorkEventArgs e)
{
// 事件处理,指定处理函数
e.Result = ProcessProgress(bkWorker, e);
}
public void ProgessChanged(object sender, ProgressChangedEventArgs e)
{
// bkWorker.ReportProgress 会调用到这里,此处可以进行自定义报告方式
this.progressBar1.Value = e.ProgressPercentage;
int percent = (int)(e.ProgressPercentage / percentValue);
this.label1.Text = "处理进度:" + Convert.ToString(percent) + "%";
}
public void CompleteWork(object sender, RunWorkerCompletedEventArgs e)
{
this.label1.Text = "处理完毕!";
}
private int ProcessProgress(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 1000; i++)
{
if (bkWorker.CancellationPending)
{
e.Cancel = true;
return -1;
}
else
{
// 状态报告
bkWorker.ReportProgress(i);
// 等待,用于UI刷新界面,很重要
System.Threading.Thread.Sleep(1);
}
}
return -1;
}
}
c++ 简单进度条
给你个思路吧,写代码可能有点麻烦,1当前播放进度,先获取你播放文件的时长,然后设置用进度条的setrange32方法,处理wm_timer消息,调用getpos获得当前进度条位置,然后setpos,
2:如果是下载,基于网络tcp/ip的话,首先要获取发送的第一次数据包,一般里面都是封包吧,有文件的全部信息,你要获取文件的大小,后面的同上,
3:点击进度条,要处理的是wm_hscroll消息,用到一些数学上的计算,算出该播放那一段文件。
调用wmp的设置在哪播放,后面同上。
如何显示进度条
一、实现原理
采用一个完整的图片来作为进度条,每次当进度条改变时,采用先贴图再用背景色擦去不需显示的一段进度的方法来实现进度条的变化,可实现制作任何复杂美观的进度条。
二、准备工作
首先需准备一个如下图样式的进度条图片(当然你可以做你自己喜欢的样式)。
然后在窗体中加入一PictureBox控件,属性设置如下:
AutoSize:True
Appearance:Falt
AutoRedraw:True
ScaleMode: Pixel
Picture:〃准备的图片〃
再加一辅助控件(只用于保存图片,方便快捷地使用进度条)Image,属性设置如下:
Picture:〃准备的图片〃
Visible:FALSE
说明:本文所讲的进度条并不是狭义上那种安装程序中常见的仅表示一个事件进程的进度条,而是把那些条形的,表示一个量的大小的图示统称为进度条。
以此概念为基础让我们先来看看它的一些用途和类别,然后给出各类进度条的实现。