假设有5个label
鼠标点击第一个时,第一个就往下移动
点第二个时`第二个也开始往下移动
能不能像javascript那样做
onclick=move(this) 控件1
onclick=move(this) 控件2
onclick=move(this) 控件3
function move(obj)
{
obj.style.top = parseInt(obj.style.top)+1
setTimeout("move("+obj+")",1)
}
的确触发了多个计时器,但C#当中的代码`有没有更好的办法呢?
非要用全局的变量吗?` 而且Timer组件也要手动去设定多个?
Timer组件的事件委托`方法好像不能传参了。。
请高手赐教
參考答案:MSDN:
.NET Framework 类库
Timer 构造函数 (TimerCallback, Object, Int32, Int32)
使用 32 位的有符号整数指定时间间隔,初始化 Timer 类的新实例。
命名空间:System.Threading
程序集:mscorlib(在 mscorlib.dll 中)
语法
public Timer (TimerCallback callback,Object state,int dueTime,int period)
参数
callback
一个 TimerCallback 委托,表示要执行的方法。
state
一个包含回调方法要使用的信息的对象,或者为 空引用(在 Visual Basic 中为 Nothing)。
dueTime
调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
period
调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
TimerCallback 委托:
C#
[ComVisibleAttribute(true)]
public delegate void TimerCallback (Object state)
参数
state
一个对象(包含与该委托所调用的方法相关的特定于应用程序的信息)或为 空引用。
这个就是用来传参的。