简体   繁体   English

添加进度栏C#WPF

[英]Add Progress Bar C# WPF

I'm trying to add a progress bar into my program. 我正在尝试在程序中添加进度条。

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] });
}

I want the FileLoadPB progress bar to increment by 'i' each time an object is added to my ListView. 我希望FileLoadPB进度栏每次将对象添加到我的ListView时都按“ i”递增。 This works, however it doesn't actually show the progression of the bar. 此方法有效,但是实际上并没有显示进度条的进度。 It only shows empty at the start of the loop, and full and the end. 它仅在循环开始时显示为空,并在循环结束时显示为空。 I've read a few things on BackgroundWorker, however I'm not sure how to implement it. 我已经在BackgroundWorker上阅读了一些内容,但是我不确定如何实现它。

The following code is just a dummy to illustrate how to use the BackgroundWorker. 以下代码只是一个虚拟对象,用于说明如何使用BackgroundWorker。 Hope it helps 希望能帮助到你

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();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM