[WP7][修練][VB.NET] Timer 撰寫簡單的時鐘範例

這是在一本書看到的範例,原本的範例是C# Silverlight,不過小喵自己是使用VB.NET開發慣了,所以特別將這個範例轉成VB.NET。

緣起

這是在一本書看到的範例,原本的範例是C# Silverlight,不過小喵自己是使用VB.NET開發慣了,所以特別將這個範例轉成VB.NET。

轉換過程中,發現其實C#的寫法與VB.NET在撰寫上還是有相當程度上的差異,所以一般如果對於C#不熟悉的人,或者對於VB.NET沒有那麼深入的人,可能對於這樣的範例從C#轉換成VB.NET會有點吃力。這時候,小喵建議有這樣困擾的朋友們,【MSDN】是我們開發的最佳良伴。遇到不熟悉,C#相同的東西在VB.NET上不知道如何轉換撰寫的話,找出關鍵字,去MSDN找一找,應該就可以找到相關的VB.NET範例。

 

需求

回到主題,我們希望在WP7上面,做一個數字時鐘,可以把目前的時間顯示出來。

 

畫面

這樣的題目其實不難,我們目標就是拉名稱為txtblk的一個TextBlock在畫面中,然後透過Timer,每秒鐘啟動一次,把目前的時間顯示在這個TextBlock的Text就可以了。於是我們首先從工具箱中拉一個TextBlock來到畫面中央,設定他的XAML如下


<TextBlock HorizontalAlignment="Center" Name="txtblk" Text="txtblk" VerticalAlignment="Center" />

 

程式(C#)

書本上的範例,是C#的,小喵將之轉錄如下:


using System;
using System.Windows.Threading;
using Microsoft.Phone.Controls;

namespace SilverlightSimpleClock
{
	public partial class MainPage:PhoneApplicationPage
	{
		public MainPage()
		{
			InitializeComponent();
			
			DispatcherTimer tmr = new DispatcherTimer();
			tmr.Interal = TimeSpan.FromSeconds(1);
			tmr.Tick += OnTimerTick;
			
			tmr.Start();
		}

		void OnTimerTick(object sender, eventArgs args)
		{
			txtblk.Text = DateTime.Now.ToString();
		}
	}
}

程式(VB.NET)

如果您是使用C#的朋友,這樣的程式碼就可以運作了,不過,如果是VB.NET呢??


Imports System
Imports System.Windows.Threading
Imports Microsoft.Phone.Controls

Partial Public Class MainPage
    Inherits PhoneApplicationPage

    '宣告tmr是一個DispacherTimer的物件,並建立執行個體
    '宣告為WithEvents,後面可以透過Handles來讓Sub與事件結合在一起
    Private WithEvents tmr As New DispatcherTimer

    ' 建構函式
    Public Sub New()
        InitializeComponent()
    End Sub

    '自己撰寫一個OnTimerTick的Sub,並且設定Hadles tmr的Tick事件
    Private Sub OnTimerTick(ByVal sender As Object, ByVal args As EventArgs) Handles tmr.Tick
        '當Timer Tick的時候,讓TextBlock顯示目前的時間
        Me.txtblk.Text = DateTime.Now.ToString
    End Sub

    Private Sub MainPage_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        'Page 載入後

        '設定Timer的間隔,設定為秒
        tmr.Interval = TimeSpan.FromSeconds(1)
        '啟動Timer
        tmr.Start()

    End Sub
End Class

稍微比較一下,有關於事件的處理,C#與VB.NET的寫法還真的不太一樣。小喵對於這部份也不是很熟,所幸透過MSDN查詢看看,或者找出關鍵字去Google看看VB.NET的寫法,最後還是可以找出VB.NET運作的語法,如果有相同狀況的朋友們,可以參考看看。

^_^

 

執行畫面

Timer01


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat