在winforms中使用进度条

时间:2011-03-25 14:27:08

标签: c# .net winforms progress-bar

我只是想让进度条前进一步,因为计时器会加速一秒钟,但却无法完成。请帮忙。

我应该在计时器的tick事件中使用变量i,并将i递增1。 并写:progressBar1.Increment(i) - 我试过这个,它的工作原理。

但为什么不使用以下代码:

public partial class Form1 : Form
{
    Timer t = new Timer();

    public Form1()
    {
        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        t.Interval = 1000;
        t.Enabled = true;
        t.Tick += new EventHandler(t_Tick);
    }
    void t_Tick(object sender, EventArgs e)
    {
        progressBar1.Increment(1);
    }

当一秒钟过去时,tick事件发生,并且progressBar应该增加1,但是在这里,它只是在一个增量上升,即它只前进1并停止。

3 个答案:

答案 0 :(得分:2)

It should work。在分配事件处理程序后尝试启用计时器:

private void Form1_Load(object sender, EventArgs e)
{
    t.Interval = 1000;
    t.Tick += new EventHandler(t_Tick);
    t.Enabled = true;
}

答案 1 :(得分:0)

您的代码可能正常运行。问题是您的进度条上的最大值可能很高,以至于进度条的值足够高以显示下一个块需要一段时间。

将您的最大值设置为100,您应该会看到您的代码正常运行。

答案 2 :(得分:-1)

缺少定时器启动,下面的代码假设有效。

public partial class Form1 : Form
{
    Timer t = new Timer();

    public Form1()
    {
        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        t.Interval = 1000;
        t.Tick += new EventHandler(t_Tick);
        // enable timer after the handler attached
        t.Enabled = true;
        // Start the timer.
        t.Start();
    }
    void t_Tick(object sender, EventArgs e)
    {
        progressBar1.Increment(1);
    }