这是非常粗糙的代码,而且我在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)
{
}
}
}
如果有人可以帮我处理这段代码,那将是非常好的!不胜感激!
答案 0 :(得分:1)
您正在订阅代码隐藏中的Tick
事件。
检查您是否还在Designer.cs
文件中订阅了相同的事件(您可以查看设计器中的“属性”面板)。
我的猜测是你已经订阅了两次活动,所以活动中的所有内容都会发生两次,包括创建和打开Form4
的新实例。
解决方案是从timer1.Tick += new EventHandler(timer1_Tick);
事件中删除Form3_Load
。