C# 定时器速度自动增加

C# 定时器速度自动增加,c#,winforms,C#,Winforms,我有以下代码。当我点击按钮picturebox时,从右到左,从上到下移动。当它移动到面板的末端时,它再次从右到左和从上到下开始。现在的问题是,在第一次完成picturebox后,从右到左计时器的速度逐渐增加,虽然我将其设置为200,但似乎此行myform.counterTop=myform.counterTop+5;值5也逐渐增大。在第一轮之后,它增加了一点,在第二轮之后,它增加了一点,并且继续这样。请告诉我为什么会这样 namespace Spaceship_Invaders {

我有以下代码。当我点击按钮picturebox时,从右到左,从上到下移动。当它移动到面板的末端时,它再次从右到左和从上到下开始。现在的问题是,在第一次完成picturebox后,从右到左计时器的速度逐渐增加,虽然我将其设置为200,但似乎此行myform.counterTop=myform.counterTop+5;值5也逐渐增大。在第一轮之后,它增加了一点,在第二轮之后,它增加了一点,并且继续这样。请告诉我为什么会这样

namespace Spaceship_Invaders
    {
        public partial class Form1 : Form
        {
            private int invaderlanded = 0;
            private int invaderstopped = 0;
            private  int counterfortop = -60;
            private  int counterforleft = 415;
            private int counterTop = -60;
            private int counterLeft = 415;
            private bool pictureboxclicked = false;
            private int timerinterval = 200;

        System.Windows.Forms.Timer mytimer = new System.Windows.Forms.Timer();

        public Form1()
        {
            InitializeComponent();
            Image myImage = Image.FromFile("image/Untitled6.png");
            pictureBox1.Image = myImage;
            pictureBox1.Top = counterfortop;
            pictureBox1.Left = counterforleft;
        }

        public class Spaceship
        {
            Form1 myform;
            public Spaceship(Form1 form)
            {
                myform = form;
            }            


            public void mspaceship()
            {                
                    myform.mytimer.Tick += new EventHandler(TimerEventProcessor);
                    myform.mytimer.Interval = myform.timerinterval;
                    myform.mytimer.Enabled = true;
                    myform.mytimer.Start();                    

            }     


            private void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
            {

                if (myform.pictureboxclicked)
                {
                    myform.mytimer.Interval = 5;
                    myform.pictureBox1.Top = myform.counterTop;
                    //myform.pictureBox1.Left = myform.counterLeft;
                    myform.counterTop = myform.counterTop - 5;

                    if (myform.counterTop <-60)
                    {
                        //myform.pictureBox1.Enabled = false;
                        //myform.pictureBox1.Hide();                       
                        myform.pictureboxclicked = false;
                        myform.mytimer.Interval = myform.timerinterval;
                        myform.counterLeft = 415;
                        myform.counterTop = -60;
                        myform.mytimer.Stop();                       


                    }
                }     else   {

                    if (myform.counterTop > 370 || myform.counterLeft < 1)
                    {
                        //myform.pictureBox1.Enabled = false;
                        //myform.pictureBox1.Hide();
                        myform.invaderlanded++;
                        myform.textBox2.Text = myform.invaderlanded.ToString();
                        myform.counterLeft = 415;
                        myform.counterTop = -60;
                        myform.pictureboxclicked = false;
                        myform.mytimer.Interval = myform.timerinterval;
                        myform.mytimer.Stop();                    
                      }   else  {
                        myform.pictureBox1.Top = myform.counterTop;
                        myform.pictureBox1.Left = myform.counterLeft;
                        myform.counterTop = myform.counterTop + 5;
                        myform.counterLeft = myform.counterLeft - 5;
                    }
                }             

            }
        }       


        private void button4_Click(object sender, EventArgs e)
        {

            Spaceship myspaceship = new Spaceship(this);
            myspaceship.mspaceship();

          }
namespace Spaceship\u入侵者
{
公共部分类Form1:Form
{
私有int Inventerlanded=0;
私有int=0;
私有int-counterfortop=-60;
私有int-counterforleft=415;
私人int台面=-60;
专用int计数器左=415;
private bool pictureboxclicked=false;
专用int timerinterval=200;
System.Windows.Forms.Timer mytimer=新的System.Windows.Forms.Timer();
公共表格1()
{
初始化组件();
Image myImage=Image.FromFile(“Image/Untitled6.png”);
pictureBox1.Image=myImage;
图B1.Top=反端口;
图B1.左=对向左;
}
公共级宇宙飞船
{
表格1我的表格;
公共宇宙飞船(表格一)
{
我的形式=形式;
}            
公共空间
{                
myform.mytimer.Tick+=新事件处理程序(TimerEventProcessor);
myform.mytimer.Interval=myform.timerinterval;
myform.mytimer.Enabled=true;
myform.mytimer.Start();
}     
私有void TimerEventProcessor(对象myObject,事件参数MyEventTargets)
{
if(myform.pictureboxclicked)
{
myform.mytimer.Interval=5;
myform.pictureBox1.Top=myform.counterTop;
//myform.pictureBox1.Left=myform.counterLeft;
myform.counterTop=myform.counterTop-5;
if(myform.counterTop 370 | | myform.counterLeft<1)
{
//myform.pictureBox1.Enabled=false;
//myform.pictureBox1.Hide();
myform.investrlanded++;
myform.textBox2.Text=myform.investrlanded.ToString();
myform.counterLeft=415;
myform.counterTop=-60;
myform.pictureboxclicked=false;
myform.mytimer.Interval=myform.timerinterval;
myform.mytimer.Stop();
}否则{
myform.pictureBox1.Top=myform.counterTop;
myform.pictureBox1.Left=myform.counterLeft;
myform.counterTop=myform.counterTop+5;
myform.counterLeft=myform.counterLeft-5;
}
}             
}
}       
私有无效按钮4_单击(对象发送者,事件参数e)
{
太空船myspaceship=新太空船(本);
mspaceship();
}

每次调用
mspaceship()
,都会向计时器添加另一个事件处理程序

第二次单击时,有两个事件处理程序,每个处理程序移动5像素


相反,您应该只添加一次处理程序。

每次调用
mspaceship()
,您都会向计时器添加另一个事件处理程序

第二次单击时,有两个事件处理程序,每个处理程序移动5像素

相反,您应该只添加一次处理程序。

myspaceship()
是一个非常糟糕的函数名。函数名应该是大写动词。
myspaceship()
是一个非常糟糕的函数名。函数名应该是大写动词。