一、ProgressBar
/// <summary>
/// winform窗体进度条空间progressBar帮助类
/// </summary>Bar
public class ProgressHelper
{
public System.Windows.Forms.Label m_LabTip = null;
public System.Windows.Forms.Label m_LabPercent = null;
public System.Windows.Forms.ProgressBar m_Progress = null;
/// <summary>
/// 初始化进度条参数设置
/// </summary>
/// <param name="iMin">进度最小值</param>
/// <param name="iMax">进度最大值</param>
/// <param name="sNote">进度提示</param>
public void InitProgress(int iMax, string sNote = "")
{
if(m_Progress!=null)
{
m_Progress.Visible = true;
m_Progress.Minimum = 0;
m_Progress.Maximum = iMax;
m_Progress.Step = 1;
}
if(m_LabTip!=null)
{
m_LabTip.Visible = true;
m_LabTip.Text = sNote;
}
SetPercentTip();
Application.DoEvents();
}
public void StepGo(string sNote)
{
if (m_Progress != null)
{
m_Progress.PerformStep();
}
if (m_LabTip != null)
{
m_LabTip.Text = sNote;
}
SetPercentTip();
Application.DoEvents();
}
public void CompleteStep(string sNote)
{
if (m_Progress != null)
m_Progress.Step = m_Progress.Maximum;
if (m_LabTip != null)
m_LabTip.Text = sNote;
SetPercentTip();
Application.DoEvents();
}
private void SetPercentTip()
{
if(m_LabPercent!=null && this.m_Progress!=null)
{
double dValue = Convert.ToDouble(Convert.ToDouble(this.m_Progress.Value) / Convert.ToDouble(this.m_Progress.Maximum));
dValue = Math.Round(dValue,2,MidpointRounding.AwayFromZero);
m_LabPercent.Text = string.Format("{0}%", dValue*100);
Application.DoEvents();
}
}
}
二、progressBarControl
#region 进度条
progressBarControl1.Visible = true;
//设置一个最小值
progressBarControl1.Properties.Minimum = 0;
//设置一个最大值
progressBarControl1.Properties.Maximum = 100;
//设置步长,即每次增加的数
progressBarControl1.Properties.Step = 1;
//设置进度条的样式
progressBarControl1.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
//当前值
progressBarControl1.Position = 0;
//是否显示进度数据
progressBarControl1.Properties.ShowTitle = true;
//是否显示百分比
progressBarControl1.Properties.PercentView = true;
#endregion
for (int i = 0; i < rowCount; i++)
{
Application.DoEvents();
progressBarControl1.Position += 1;
}
跨页面,类传参,防止进度条假死 设置线程
/// <summary>
/// 进度条
/// </summary>
private static ProgressBarControl m_ProgressBarControl = null;
/// <summary>
/// 提示信息
/// </summary>
private static LabelControl m_Labtip = null;
/// <summary>
/// 提示索引
/// </summary>
private static LabelControl m_LabIndex = null;
public static void InitData(ProgressBarControl pProgressBarControl, LabelControl labtip, LabelControl pLabIndex)
{
m_Labtip = labtip;
m_LabIndex = pLabIndex;
m_ProgressBarControl = pProgressBarControl;
//1.设置上述进度条属性。
m_ProgressBarControl.Properties.Maximum = 100;
m_ProgressBarControl.Properties.Minimum = 0;
m_ProgressBarControl.Properties.Step = 1;
m_ProgressBarControl.Properties.ShowTitle = true;
//2.调用
int step=0;
changedProcess("进度提示",step++)
int pIndex=0;
changeLabIndex(int pIndex)
}
/// <summary>
/// 更新进度
/// </summary>
/// <param name="pSortNum"></param>
/// <param name="pProgress"></param>
private static void changedProcess(string showInfo, int pProgress)
{
m_ProgressBarControl.EditValue = pProgress;
m_Labtip.Text = showInfo;
Application.DoEvents();
}
/// <summary>
/// 文字提示索引
/// </summary>
/// <param name="pIndex"></param>
private static void changeLabIndex(int pIndex)
{
labcontrol.Text = pIndex.ToString();
Application.DoEvents();
}