添加进度条 C# WPF
Add Progress Bar C# WPF
我正在尝试将进度条添加到我的程序中。
FileLoadPB.Maximum = mainClass.values.realXPos.Count;
for (int i = 0; i < mainClass.values.realXPos.Count; ++i)
{
FileLoadPB.Value += i;
ComponentList.Items.Add(new MappedPoint { pointNum = i + 1, xPoint = mainClass.values.realXPos[i], yPoint = mainClass.values.realYPos[i] });
}
每次将对象添加到我的 ListView 时,我希望 FileLoadPB 进度条递增 'i'。这有效,但它实际上并没有显示栏的进度。它只在循环开始时显示为空,在循环结束时显示为满。我已经阅读了一些关于 BackgroundWorker 的内容,但是我不确定如何实现它。
以下代码只是虚构的,用于说明如何使用 BackgroundWorker。希望对你有帮助
public partial class MainWindow : Window {
BackgroundWorker backgroundWorker = new BackgroundWorker();
List<int> listDummy = new List<int>();
public MainWindow() {
InitializeComponent();
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
backgroundWorker.DoWork += backgroundWorker_DoWork;
}
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
var numberOfItems = 111;
for (int i = 0; i < numberOfItems; i++) {
listDummy.Add(i);
Thread.Sleep(500);
backgroundWorker.ReportProgress(Convert.ToInt32((double)i / numberOfItems * 100));
}
}
void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) {
progressBar1.Value = e.ProgressPercentage;
}
private void Button_Click(object sender, RoutedEventArgs e) {
backgroundWorker.RunWorkerAsync();
}
}
我正在尝试将进度条添加到我的程序中。
FileLoadPB.Maximum = mainClass.values.realXPos.Count;
for (int i = 0; i < mainClass.values.realXPos.Count; ++i)
{
FileLoadPB.Value += i;
ComponentList.Items.Add(new MappedPoint { pointNum = i + 1, xPoint = mainClass.values.realXPos[i], yPoint = mainClass.values.realYPos[i] });
}
每次将对象添加到我的 ListView 时,我希望 FileLoadPB 进度条递增 'i'。这有效,但它实际上并没有显示栏的进度。它只在循环开始时显示为空,在循环结束时显示为满。我已经阅读了一些关于 BackgroundWorker 的内容,但是我不确定如何实现它。
以下代码只是虚构的,用于说明如何使用 BackgroundWorker。希望对你有帮助
public partial class MainWindow : Window {
BackgroundWorker backgroundWorker = new BackgroundWorker();
List<int> listDummy = new List<int>();
public MainWindow() {
InitializeComponent();
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
backgroundWorker.DoWork += backgroundWorker_DoWork;
}
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
var numberOfItems = 111;
for (int i = 0; i < numberOfItems; i++) {
listDummy.Add(i);
Thread.Sleep(500);
backgroundWorker.ReportProgress(Convert.ToInt32((double)i / numberOfItems * 100));
}
}
void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) {
progressBar1.Value = e.ProgressPercentage;
}
private void Button_Click(object sender, RoutedEventArgs e) {
backgroundWorker.RunWorkerAsync();
}
}