我有一个方法可以显示进程条何时执行以及何时成功完成。
我工作得很好,但我想添加百分比显示100%是否完整,如果它被卡在某些地方则更少。
我已经在线进行了多项研究,但我无法适应我正在寻找的解决方案。
这是我的代码:
private void progressBar()
{
int i;
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
for (i = 0; i <= 100; i++)
{
progressBar1.Value = i;
}
}
我在执行按钮上使用方法调用,通过以下方式调用它:
progressBar();
由于
答案 0 :(得分:1)
我已使用以下行调整prograssBar方法。
解决方案有效。
由于
int percent = (int)(((double)progressBar1.Value / (double)progressBar1.Maximum) * 100);
progressBar1.Refresh();
progressBar1.CreateGraphics().DrawString(percent.ToString() + "%",
new Font("Arial", (float)8.25, FontStyle.Regular),
Brushes.Black,
new PointF(progressBar1.Width / 2 - 10, progressBar1.Height / 2 - 7));
答案 1 :(得分:0)
为了实现操作的进度,必须首先计算操作的长度。如果不可能,则无法显示该操作的进度条。 (也许只是加载gif)
但如果是这样,有一个界面( IProgress )可以帮助您实施进度报告。
首先你应该知道,你必须在另一个线程上执行主任务,并将进度报告给UI线程。这项工作的一个简单例子就是这样。
Progress.cs
public class Progress<T> : IProgress<T>
{
private readonly Action<T> _progressAction;
public Progress(Action<T> action)
{
_progressAction = action;
}
public void Report(T value)
{
_progressAction?.Invoke(value);
}
}
您的代码就像这样,在您单击名为ButtonBase的按钮
后,任务开始Progress<int> MyProgressObject { get; set; }
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
MyProgressObject = new Progress<int>(ProgressAction);
ThreadPool.QueueUserWorkItem(TimeConsumingTask);
}
public void TimeConsumingTask(object state)
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(100);
MyProgressBar.Dispatcher.Invoke(() => ProgressAction(i));
}
}
public void ProgressAction(int progress)
{
MyProgressBar.Value = progress;
}
我知道这可能看起来很困难,但这是执行耗时任务并阻止UI阻止的正确方法
答案 2 :(得分:0)
如果您将其用作backgroundworker的一部分,则可以完美运行 我在进度条中间添加了一个标签
然后我在bgw_ProgressChanged方法中添加了最后一行
np.matrix.shape
ProgressPercentage值来自下面的方法
private void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
p_bar.Value = e.ProgressPercentage;
fnameLbl.Text = e.UserState.ToString();
percentLbl.Text = "%" + (e.ProgressPercentage).ToString();
}
Totfiles是我从服务器获取的文件数。
Thread.Sleep(100)让您在短时间内看到fnameLbl.Text显示的内容
答案 3 :(得分:0)
int total = ;
int val = ;
double createDivider = total / 100;
int percent = val / createDivider;
此值(百分比)是总计的正确百分比'%'