【发布时间】:2014-01-17 22:35:04
【问题描述】:
我有三个标签控件,在 For 循环的帮助下,我编写了一个将控件从窗体顶部移动到底部的方法。我有三个计时器,每个计时器重复移动一个控件,但问题是它们一个接一个地执行。
我希望时间同时执行,即所有三个标签同时从表单顶部向右移动。
注意:每次调用计时器后,我都会设置一个随机对象,该对象会在表单顶部随机重置位置。
【问题讨论】:
-
你用的是什么定时器?有几个,具有不同的语义。
标签: c#
我有三个标签控件,在 For 循环的帮助下,我编写了一个将控件从窗体顶部移动到底部的方法。我有三个计时器,每个计时器重复移动一个控件,但问题是它们一个接一个地执行。
我希望时间同时执行,即所有三个标签同时从表单顶部向右移动。
注意:每次调用计时器后,我都会设置一个随机对象,该对象会在表单顶部随机重置位置。
【问题讨论】:
标签: c#
那就不要使用三个计时器。只需使用一个计时器并将您的代码放入它的 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);
}
}
【讨论】:
使用一个计时器,如果你想花哨的话,可以让滴答声执行各种回调。这样您就可以在运行时定义刻度线中应该包含的内容。
【讨论】: