我对进度条和循环有几个问题。 我承认我对这一切都很陌生,所以我希望我的问题有道理。
我正在使用Microsoft Visual C#2010 Express WMA。
我使用以下代码填充进度条。
new ThreadStart(() =>
{
Thread.Sleep(0);
vProgressBar0.BeginInvoke(
new Action(() =>
{
vProgressBar0.Value = ((vTotal* 100) / vGames);
}));
}));
backgroundThread0.Start();
我需要填写许多进度条。它们被标记为vProgressBar0,vProgressBar1,vProgressBar2等。这段代码可以满足我的需求,但它非常重复 填写所有进度条。
我想使用" For"循环使用值" i"作为我填充进度条的计数器。
我能够取代" vProgressBar0.BeginInvoke"使用this.Controls[vProgressBar + i].BeginInvoke()
的声明,它可以正常工作。
我的问题是:我找不到用任何会使用" i"来替换vProgressBar0.Value = ((vTotal* 100) / vGames)
语句的方法。我的for循环中的值。有什么想法吗?
我是否可以将backgroundThread0用于for循环中的所有进度条,或者我是否还需要递增该值? (例如backgroundThread0,backgroundThread1等)因为我也无法使该值增加。
答案 0 :(得分:0)
这是非常基本的,只需将ProgressBar
个实例放在一个数组中并迭代它们。由于这是如此简单,我建议不要使用new ThreadStart
,因为您需要更好地理解一般编程实践。
private readonly ProgressBar[] _bars =
new[]
{
vProgressBar0, vProgressBar1, vProgressBar2, vProgressBar3
};
public void StartProgress()
{
for (int i = 0; i < _bars.Length; ++ i)
{
var progressBar = _bars[i]; // If "i == 0" this is the "vProgressBar0" instance.
// Use it here...
}
}