【问题标题】:use of progress bar in winformswinforms中进度条的使用
【发布时间】:2011-03-25 14:27:07
【问题描述】:

我只是希望进度条前进一步,因为计时器计时一秒,但做不到。请帮忙。

我应该在计时器的滴答事件中使用变量 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 并停止。

【问题讨论】:

  • 最好先添加Handler再设置enabled=true
  • 我试过了,你的代码正在运行。进度条的最小值和最大值是多少?

标签: c# .net winforms progress-bar


【解决方案1】:

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

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

【讨论】:

  • 先生,您能告诉我这是如何工作的吗?我的意思是,Tick 事件何时触发? t.Enabled 何时设置为 true 或其他?
  • 为什么在事件处理程序之前启用计时器时它不起作用?
  • 也请用简单的语言告诉我关于maximun和minimum属性的例子吗?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    缺少定时器启动,下面的代码假设可以工作。

    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);
        }
    
    猜你喜欢
    • 2012-08-21
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多