Как заменить предыдущий элемент списка следующим элементом, используя backgroundworker c #? - PullRequest
0 голосов
/ 19 февраля 2019

Я добавляю элементы в список, используя backgroundworker.Он показывает все элементы, присутствующие в списке, один за другим через некоторый промежуток времени.Я хочу показать только текущий элемент в списке, а не все элементы.

Это то, что я пробовал.

 private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
    {

        List<string> result = new List<string>();

        var found = obj.getFiles();//List<strings>
        if (found.Count != 0)
        {

            for (int i = 0; i < found.Count; i++)
            {
                int progress = (int)(((float)(i + 1) / found.Count) * 100);
                if (found[i].Contains("SFTP"))
                {
                    result.Add(found[i]);

                    (sender as BackgroundWorker).ReportProgress(progress, found[i]);
                }
                System.Threading.Thread.Sleep(500);
            }



            e.Result = result;

        }
    }

    private void backgroundWorker3_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        if (e.UserState != null)

        listBox3.Items.Add(e.UserState);

    }

1 Ответ

0 голосов
/ 19 февраля 2019

Я хочу показать только текущий элемент в списке, а не все элементы.

Хотя это немного хак, я думаю, это должно работать для того, что вы описываете

// just call clear first
listBox3.Items.Clear();
listBox3.Items.Add(e.UserState);

По правде говоря, вы уверены, что хотите ListBox в этих обстоятельствах?В конце концов, это не совсем список, это всего лишь элемент

...