Share via


Silverlight 2 手把手(之五) 编程实现定时器

在 Silverlight 北京站中,我向大家介绍了在 Silverlight 2 中,你可以使用 Storyboard 实现定时器,你也可以通过 code behind ,应用类似桌面端程序的方法实现定时器 (Timer) 的实现。

下面我就如何通过建立 System.Windows.Threading.DispatcherTimer 对象来实现 Silverlight 2 定时器的方法。

以下是通过使用 DispatcherTimer 对象,实现的 Silverlight 2 计时器。

image

1. 首先在场景中置入一个 <TextBlock /> 和一个 <Button />

    1: <Canvas x:Name="myCon" Height="300" Width="400" >
    2:             <TextBlock x:Name="myText" FontSize="50" Canvas.Left="180" Canvas.Top="40" Text="0"></TextBlock>
    3:         </Canvas>
    4:         <Button x:Name="myBtn" Height="50" Width="100" MouseLeftButtonDown="myBtn_MouseLeftButtonDown"></Button>

2. 声明 Dispatcher 对象 myTimer

 DispatcherTimer myTimer = new DispatcherTimer();

3. 在页面加载后声明按钮初始化内容、myTimer 属性

    1: myBtn.Content = "start";
    2: myTimer.Interval = new TimeSpan(0, 0, 0, 1);
    3: myTimer.Tick += new EventHandler(myTimer_Tick);

 

4. 声明布尔变量状态机 myState,实现鼠标左键单击事件

    1: if (myState)
    2:             {
    3:                 myTimer.Start();
    4:                 myBtn.Content = "Stop";
    5:             }
    6:             else
    7:             {
    8:                 myTimer.Stop();
    9:                 myBtn.Content = "Start";
   10:             }
   11:             myState = !myState;

5. 声明 myTimer_Tick 事件

    1: int i = 0;
    2:  
    3: void myTimer_Tick(object sender, EventArgs e)
    4: {
    5:     myText.Text = i++.ToString();
    6: }

这个例子的源码你可以从这里下载: