在我目前的情况下,我有一个 winform 应用程序 dat 为用户选择的几种数据类型生成随机数据。用户还可以选择必须生成多少行,对于生成我使用在 button_click 方法中调用的几个函数。行数和每行列数的长度是可变的。现在我的问题是可以为整个进度制作一个进度条吗?这是我自己制作的第一个 C# 项目,我已经找到了有关后台工作人员的信息,但如果我的问题可能,我找不到信息。希望somewhane可以帮助我,并为我糟糕的英语感到抱歉。
问问题
182 次
4 回答
0
那么你可以知道有多少行和列。然后将 progressBar1.Maximum 设置为行 + 列,当后台工作程序中的程序执行一列时,您增加 progressBar1.Value += 1; . 所有这些都必须在 backgroundWorker 中,这样 progressBar 才能顺利运行。
于 2013-02-08T08:34:31.730 回答
0
ProgressBar有一个名为“Value”的成员。如果您知道将创建多少个项目,则可以相应地进行设置。
于 2013-02-08T08:35:45.073 回答
0
如果我正确理解您的问题,是的,您可以ProgressBar
从代码的不同部分更新您的问题的值。
如果您想为不同的操作分配不同的值,只需制作一种方法即可。例如:
假设myProgressBar.Maximum = rowCount + columnCount;
public void UpdateProgressBar(int i)
{
if(myProgressBar.Value < myProgressBar.Maximum)
{
if(myProgressBar + i > myProgressBar.Maximum)
myProgressBar.Value = myProgressBar.Maximum;
else myProgressBar.Value += i;
}
myProgressBar.Update();
}
同样,您可以在您希望反映在您的 中的任何事件中调用类似的代码ProgressBar
,例如添加或删除行或按钮单击。
查看一些关于 的教程BackGroundWorker
,这将使您的 UI 保持响应。
于 2013-02-08T08:40:31.157 回答
0
你可以在没有后台工作人员的情况下做到这一点。使用进度条的最小值、最大值和值属性来实现这一点。将 progressbar1.Maximum 设置为行的计数和行内循环,将值增加 1。
progressBar1.Minimum = 1;
progressBar1.Maximum = Rows.Count;
progressBar1.Value = 1;
for (int i = 1; i <= Row.Count; i++)
{
progressBar1.Value = progressBar1.Value + 1;
...
... do your code
...
于 2013-02-08T09:04:55.087 回答