如何使用 backgroundworker c# 将列表框的前一项替换为下一项?
How to replace previous item of listbox with next item using backgroundworker c#?
我正在使用 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);
}
I want to show only current item in the list and not all the items.
虽然这有点乱七八糟,但我认为它应该适用于您描述的内容:
// just call clear first
listBox3.Items.Clear();
listBox3.Items.Add(e.UserState);
说实话,在这种情况下你确定要 ListBox
吗?毕竟,它不是真正的列表,它只是一个项目。
我正在使用 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);
}
I want to show only current item in the list and not all the items.
虽然这有点乱七八糟,但我认为它应该适用于您描述的内容:
// just call clear first
listBox3.Items.Clear();
listBox3.Items.Add(e.UserState);
说实话,在这种情况下你确定要 ListBox
吗?毕竟,它不是真正的列表,它只是一个项目。