我明白我们如何将一个变量(progresspercentage)传递给“progresschanged”函数,就像这样。
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
...
worker.ReportProgress(pc);
...
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
}
但是我想给这个函数传递更多的变量,比如:
worker.ReportProgress(pc,username,score);
...
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
this.currentUser.Value = e.UserName; //as string
this.score.Value = e.UserScore; //as int
}
抱歉,我是 c# 的新手,谁能给我一个例子。
最佳答案
重载后台工作组件的 ReportProgress 方法以传递百分比和对象类型的状态值:
public void ReportProgress(int percentProgress, Object userState)
在您的使用需求中,您可以使用字符分隔符连接 UserName 和 Score,从而将多个值传递给 userState 参数;并在引发 ProgressChanged() 事件时将它们拆分。您还可以创建一个基于属性的小类 - 用值填充它并使用 userState 对象类型参数传递。
有关如何使用重载 ReportProgress 方法的示例,请查看以下 MSDN 链接:
关于c# - 如何在 C# backgroundworker progressed changed 事件中发送更多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7332632/