使用计时器移动按钮

时间:2012-08-02 15:27:15

标签: c# forms button timer

我有四个按钮叫做“ship1,ship2”等。 我希望他们移动到表格的右侧(以相同的速度并同时开始),每当我点击一个“船”时,所有的船都应该停下来。

我知道我需要使用一个计时器(我编写了使用线程的代码,但在停止发货时会给我带来麻烦。)我不知道如何使用计时器。

我试图在MDSN中读取计时器信息,但我不明白。 你可以帮助我吗?

使用线程代码。 我不想用它。我需要使用定时器! (我在这里发布,因为它没有让我发布没有任何代码

    private bool flag = false;
    Thread thr;
    public Form1()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        flag = false;
        thr = new Thread(Go);
        thr.Start();

    }

    private delegate void moveBd(Button btn);

    void moveButton(Button btn)
    {
        int x = btn.Location.X;
        int y = btn.Location.Y;
        btn.Location = new Point(x + 1, y);
    }

    private void Go()
    {
        while (((ship1.Location.X + ship1.Size.Width) < this.Size.Width)&&(flag==false))
        {
            Invoke(new moveBd(moveButton), ship1);
            Thread.Sleep(10);
        }

        MessageBox.Show("U LOOSE");

    }

    private void button1_Click(object sender, EventArgs e)
    {
        flag = true;
    }

1 个答案:

答案 0 :(得分:1)

你用Google搜索了Windows.Forms.Timer吗?

您可以通过以下方式启动计时器:

Timer timer = new Timer();

timer.Interval = 1000; //one second
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Enabled = true;
timer.Start();

您需要一个事件处理程序来处理Elapsed事件,您可以在其中放置代码来处理移动'Button':

private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)  
{
      MoveButton();       
}