如何使ProgressBar工作

本文关键字:工作 ProgressBar 何使 | 更新日期: 2023-09-27 18:23:53

我正在用VS 2010制作一个Windows窗体应用程序。我在表单中添加了一个ProgressBar,并更改了它的值。然而,ProgressBar不会前进或改变。我认为其中一个原因是因为这个过程太快了,但我把它弄得很慢,也不起作用。

这是代码:

void pn_TenPercentProgressEvent(object sender, PrimeNumberEventArgs e)
{  
    probarPrimeNumber.Visible = true;  
    probarPrimeNumber.Value = (int)e.Percent * 100;  
    this.Refresh();  
}

这是发生事件的类:

public ulong[] Generate(int count)
    {
        ulong[] ulngaryResult = new ulong[count];
        switch (count)
        {
            case 0:
                {
                    throw new Exception("The Zero is NOT Permitted.");
                }
            case 1:
                {
                    ulngaryResult[0] = 2;
                    break;
                }
            case 2:
                {
                    ulngaryResult[1] = 3;
                    goto case 1;
                }
            default:
                {
                    int intIndex = 0;
                    double dblPercent = 0.1;
                    for (ulong i = 2; i < ulong.MaxValue; i++)
                    {
                        if (this.IsPrime(i))
                        {
                            ulngaryResult[intIndex] = i;
                            intIndex++;
                        }
                        if (intIndex == (int)(dblPercent * count))
                        {
                            //Raise TenPercentProgressEvent
                            if (TenPercentProgressEvent != null) //Optional Event
                            {
                                TenPercentProgressEvent((object)this, new PrimeNumberEventArgs(intIndex, count, dblPercent));
                            }
                            dblPercent += 0.1;
                        }
                        if (intIndex == count)
                        {
                            //Raise FinishedProgressEvent
                            if (FinishedProgressEvent != null) //Optional Event
                            {
                                FinishedProgressEvent((object)this, new PrimeNumberEventArgs(intIndex, count, dblPercent));
                            }
                            break;
                        }
                    }
                    break;
                }
        }
        return ulngaryResult;
    }

如何使ProgressBar工作

尝试(int)(e.Percent * 100)。事实上,在乘以100轮到0或1之前,先转换为int,然后一直转换为0%或100%,但从不介于两者之间。