none
[vb6] 請問自定義的Class(帶事件)可以dim 成動態陣列嗎 RRS feed

  • 問題

  • 這樣定義可以:

    Dim  MyClass() As clsMyClass

    可是這樣定義就不行了

    Dim WithEvents MyClass() As clsMyClass

    Dim WithEvents MyClass(1) As clsMyClass

    也不行

    有什麼變通的方式嗎,(如果一定要Class帶Events的話)

    如果作成控制項應該就可以了,可是我不想安裝跟註冊控制項會產生很多不必要的麻煩

    我現在的作法是把會用到的參考物件(tbl,dll)全部跟執行檔放在一起不必安裝就能執行(類似綠色軟體)

     

    有別的辦法可以達到這種想法嗎(動態陣列帶著事件的Class)

     

    如果都不行的話,只好去除事件,以屬性代替,一直讀取該屬性有沒有變化,有變化再處理了.

    2008年5月15日 下午 09:47

解答

  • ...

    AddHandler VB6 沒有,是 VBNET 的東西。

     

    你的問題線上手冊就有,請安裝 MSDN for Visual Studio 6.0 中文版。

    mkAngryMSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1028\vbcon98.chm::/Html/vbconhandlingobjectsevents.htm

    Code Snippet

    對 WithEvents 變數的一些限制

    使用 WithEvents 變數時,應該注意下面這些限制條件:

    1. WithEvents 變數無法是一般的物件變數。也就是說,您無法把它宣告為 As Object - 當宣告此變數時,必須指定物件類別名稱。

    2. 您無法把 WithEvents 變數宣告為 As New。必須明確地建立事件來源的物件,並將它指定給 WithEvents 變數。

    3. 您無法在一般模組中宣告 WithEvents 變數。只能在物件類別模組、表單模組以及其它定義物件類別的模組中宣告。

    4. 您無法建立 WithEvents 變數的陣列。

     

    2008年5月16日 上午 03:07
    版主

所有回覆

  • Dim  MyClass() As clsMyClass

    redim MyClass(0)

    MyClass(0)=new clsMyClass

    AddHandler MyClass(0).EvenMyFun, AddressOf EvenMyFun_Test

     

     Public Sub EvenMyFun_Test(與clsMyClass中EvenMyFun相同定義)
    ....

    End Sub

     

    請你試試看

    2008年5月16日 上午 01:30
  • ...

    AddHandler VB6 沒有,是 VBNET 的東西。

     

    你的問題線上手冊就有,請安裝 MSDN for Visual Studio 6.0 中文版。

    mkAngryMSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1028\vbcon98.chm::/Html/vbconhandlingobjectsevents.htm

    Code Snippet

    對 WithEvents 變數的一些限制

    使用 WithEvents 變數時,應該注意下面這些限制條件:

    1. WithEvents 變數無法是一般的物件變數。也就是說,您無法把它宣告為 As Object - 當宣告此變數時,必須指定物件類別名稱。

    2. 您無法把 WithEvents 變數宣告為 As New。必須明確地建立事件來源的物件,並將它指定給 WithEvents 變數。

    3. 您無法在一般模組中宣告 WithEvents 變數。只能在物件類別模組、表單模組以及其它定義物件類別的模組中宣告。

    4. 您無法建立 WithEvents 變數的陣列。

     

    2008年5月16日 上午 03:07
    版主