0

我使用 C# Winforms 编写了一个用户控件。在用户控件中,我有三个文本框:

  • txtStartNumber - 输入类型:int。
  • txtEndNumber - 输入类型:int。
  • txtQuantity - iput 的类型为:int。(值 = txtEndNumber - txtStartNumber)

进度条表示编号。添加到数据库的记录及其总范围设置为等于 txtQuantity。

当一条或多条记录重复时,进度条停止。

我的问题是:

  1. 如何设置进度条的初始值?
  2. 如何管理进度条显示的进度?

我如何将其保存到数据库中:

for (long i = from; i < to; i++)
{
    for (int j = 0; j < (to - from); j++)
    {
        arrCardNum[j] = from + j;
        string r = arrCardNum[j].ToString();
        try
        {
            sp.SaveCards(r, 2, card_Type_ID, SaveDate, 2);
            progressBar1.Value = j;
        }
    }
}
4

3 回答 3

10

尝试这个:

private void StartBackgroundWork() {
    if (Application.RenderWithVisualStyles)
        progressBar.Style = ProgressBarStyle.Marquee;
    else {
        progressBar.Style = ProgressBarStyle.Continuous;
        progressBar.Maximum = 100;
        progressBar.Value = 0;
        timer.Enabled = true;
    }
    backgroundWorker.RunWorkerAsync();
}

private void timer_Tick(object sender, EventArgs e) {
    progressBar.Value += 5;
    if (progressBar.Value > 120)
        progressBar.Value = 0;
}

Marquee 样式需要启用 VisualStyles,但它会自行持续滚动而无需更新。我将其用于不报告进度的数据库操作。

这是另一个进度条教程

于 2012-11-18T12:52:37.107 回答
0

要更改值,请使用:

private void timer1_Tick(object sender, EventArgs e)
    {
        progressBar2.Value = progressBar2.Value - 15;
    }

在 C# 中

于 2014-10-20T19:32:14.383 回答
0

您不能使用循环来使用进度条执行此操作。在 for、while、do...while 循环或计时器中运行代码是有区别的。循环中的代码立即完成,您看不到这一点,在计时器中您可以。即使您尝试在计数器中放入循环,它也不起作用:

for(int i=a;i<b;++i)
{
    if (cnt < 1000000)
    {
        IncrProgressBar();
        cnt++;
    }
    else
    {
        cnt = 0;
    }
}

如果要使用进度条执行此操作,则必须放入将数据添加到数据库的计时器 OnTick 事件代码,并在此事件中增加进度条值。这与更改表单组件的其他属性(文本、大小...)类似。如果你想看到组件的变化,你必须使用计时器。

于 2014-10-17T20:53:03.837 回答