【问题标题】:C#: Executing multiple timers simultaneously [closed]C#:同时执行多个计时器[关闭]
【发布时间】:2014-01-17 22:35:04
【问题描述】:

我有三个标签控件,在 For 循环的帮助下,我编写了一个将控件从窗体顶部移动到底部的方法。我有三个计时器,每个计时器重复移动一个控件,但问题是它们一个接一个地执行。

我希望时间同时执行,即所有三个标签同时从表单顶部向右移动。

注意:每次调用计时器后,我都会设置一个随机对象,该对象会在表单顶部随机重置位置。

【问题讨论】:

  • 你用的是什么定时器?有几个,具有不同的语义。

标签: c#


【解决方案1】:

那就不要使用三个计时器。只需使用一个计时器并将您的代码放入它的 Tick 事件中。

根据您的代码,您可以执行以下操作,在您的方法之外定义您的 Random 变量,并使用 timer1_Tick 事件,您可以删除其他计时器:

Random random = new Random(); 
private void timer1_Tick(object sender, EventArgs e)
{
        int X = random.Next(0, 1230); 
        int y = X; 
        label2.Location = new Point(X, 5);
        label3.Location = new Point(X, 5);
        for (int i = 5; i <= 470; i++)
        {
            label2.Location = new Point(y, i);
            label3.Location = new Point(y, i);
            Thread.Sleep(1);
        }
}

【讨论】:

  • 这是一个标签的代码。当我在表单中按下一个按钮时,标签开始连续移动。我怎样才能同时启动它们,如果我不应该使用定时器,那还有什么?线程等?
  • private void Form1_KeyPress(object sender, KeyPressEventArgs e) { label1.Text = "Key Pressed:" + e.KeyChar; //动画(发件人,e); timer1.Start(); timer2.Start(); }
  • private void timer1_Tick(object sender, EventArgs e) { Random random = new Random(); int X = random.Next(0, 1230);整数 y = X; label2.Location = new Point(X, 5); for (int i = 5; i
  • private void timer2_Tick(object sender, EventArgs e) { Random random = new Random(); int X = random.Next(0, 1230);整数 y = X; label3.Location = new Point(X, 5); for (int i = 5; i
  • 好的,谢谢,如何用key事件拦截这个事件,比如在动画过程中,如果我按下任意键,它会停止动画或者执行一些动作?
【解决方案2】:

使用一个计时器,如果你想花哨的话,可以让滴答声执行各种回调。这样您就可以在运行时定义刻度线中应该包含的内容。

【讨论】:

  • 好的,谢谢,如何用key事件拦截这个事件,比如在动画过程中,如果我按下任意键,它会停止动画或者执行一些动作?
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
相关资源
最近更新 更多