使用Timer with Progress Bar打开下一个表单

时间:2014-03-05 03:35:02

标签: c# timer progress-bar

这是非常粗糙的代码,而且我在C#中很新,我无法了解我的代码有什么问题。它使用计时器和进度条。我知道代码可能会更好,而且有点粗糙。这是我的第一个程序的一部分,我已经走得很远了。

我的问题是当进度条使用计时器达到100%时,带有进度条的当前房间应该隐藏,然后切换到下一个房间。它有效,但两次打开隔壁房间?我究竟做错了什么?我希望代码最终能够加载更多东西,因为它正在加载,但目前还没有:)。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
     public partial class Form3 : Form
    {
       public Form3()
      {
         InitializeComponent();
      }

      private void Form3_Load(object sender, EventArgs e)
      {
         timer1.Enabled = true;
         timer1.Start();
         timer1.Interval = 1000;
         progressBar1.Maximum = 10;
         timer1.Tick += new EventHandler(timer1_Tick);
      }

      private void progressBar1_Click(object sender, EventArgs e)
      {
      }

      private void timer1_Tick(object sender, EventArgs e)
      {
         if (progressBar1.Value != 10)
         {
             progressBar1.Value++;
         }
        else
         {
             timer1.Stop();
             this.Hide();
             (new Form4()).Show();
         }
     }

     private void progressBar1_Click_1(object sender, EventArgs e)
     {

     }
   }
}

如果有人可以帮我处理这段代码,那将是非常好的!不胜感激!

1 个答案:

答案 0 :(得分:1)

您正在订阅代码隐藏中的Tick事件。

检查您是否还在Designer.cs文件中订阅了相同的事件(您可以查看设计器中的“属性”面板)。

我的猜测是你已经订阅了两次活动,所以活动中的所有内容都会发生两次,包括创建和打开Form4的新实例。

解决方案是从timer1.Tick += new EventHandler(timer1_Tick);事件中删除Form3_Load