公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2008年8月6日 星期三

問題與回應(08/06)

1.

請問在Silverlight 2 講堂 -13:使用Timer建立圖片輪播器[程式]中的下列的2段CODE 要如何轉換成VB的程式嗎呢?

public Page()
{
    InitializeComponent();
    _images = new Image[] { image, image1, image2, image3 };
    this.Loaded += new RoutedEventHandler(Page_Loaded);

}

void LoadPictures(object obj) {

    this.Dispatcher.BeginInvoke(
        delegate (){
            MakeIndexRight();
            ResetImageSource();
            Scorlling.Begin();
        }
     );
}

==>

        首先說明的是,第一段程式其實也可以直接在XAML的標籤中設定UserControl的事件,然後再透過VS 2008開發工具的[巡覽至事件處理常式]功能,就可以加入Page_Loaded的事件處理常式:

快照2

        在VB程式中,若是要跟範例一樣動態註冊事件處理常式的話,就要改用AddHandler指令,程式碼如下:

Public Sub New()
    InitializeComponent()
    _images = New Image() {image1, image2, image3, image4}
   AddHandler Me.Loaded, AddressOf Page_Loaded

End Sub

    而第二段程式中,因為使用了C#的匿名方法指定,所以程式較為簡潔。若是要改成VB的程式的話,建議步驟:

1. 先定義一個沒有接收參數的Delegate:

Public Delegate Sub NoArgsDelegate()

2. 然後再建立一個UpdateUI的方法,觸發更新UI的動作:

Public Sub UpdateUI()
    MakeIndexRight()
    ResetImageSource()
    Scrolling.Begin()
End Sub

3. 再透過Delegate物件,將UpdateUI方法註冊到Dispatcher物件的工作佇列中:

Private Sub LoadPictures(ByVal obj As Object)

    Me.Dispatcher.BeginInvoke(New NoArgsDelegate(AddressOf UpdateUI))

End Sub

 

2.

        請問老師可以不可以提供VB的範例程式碼?

==>

        這一點稍微抱歉,因為目前Silverlight 2講堂的內容還有很多要推出,所以暫時我的範例會先以C#為主。其實大部分的程式我都會加上說明,因此使用VB的朋友也可以試著寫寫看,有問題可以跟我說,我可以先把一些比較複雜的程式轉成VB程式碼給各位參考。等到講堂內容完成之後,我也會另外再製作一份VB版的範例程式,給使用VB開發的朋友參考。

沒有留言:

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)