none
控制項陣列 RRS feed

  • 问题

  • vb 6 中的控制項陣列我們可以用索引值來寫程式

    vb 2008 沒有控制項陣列了

    如果我的表單上有好幾各Label

    我每一秒按照順序只移動其中一個

    EX: Label1 --> Label2 --> Label3 ......

    可以用 1 -->2 -->3 ....

    還有辦法知道嗎?

    Thanks

     

     

     

    2008年8月20日 6:58

答案

全部回复

  • DirectCast(Me.Controls.Find("Label1", True)(0), Label).TExt="test"

     

    2008年8月20日 7:44
    版主
  • 下面程式的寫法是用crab( 2 ) 陣列 來取代3各圖片控制項---Form1_Activated( )中

    請問這樣寫如何 ?

    Thanks

     

    Public Class Form1
        Dim num, index As Short
        Dim crab(2) As PictureBox


        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            num += 1
            If num = 3 Then num = 0
            crab(num).Left = crab(num).Left + 50
        End Sub


        Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
            For Each aa As Object In Me.Controls    '表單上的每一個物件=aa
                If aa.GetType.Name = "PictureBox" Then
                    crab(index) = aa                '這樣就不用一個一個設定
                    Debug.Print(crab(index).Name)
                    index = index - 1
                End If
            Next
        End Sub


        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            num = -1
            index = 2
        End Sub

     

    End Class

    2008年8月20日 7:58
  • 条条道路通罗马

     

    但是你这有个问题,不一定aa(2)=picturebx2

    2008年8月20日 8:07
    版主
  • 我用debug.print看了

    發現他都會先從最大的的先找到

    會有例外嗎 ???

     

    以我這個程式為例

    找到的順序就是 picturebox3 --> picturebox2-->picturebox1

    我對應的陣列為 crab(2)      ----> crab(1)     ---->crab(0)

     

    Thanks

     

     

    2008年8月20日 8:12
  •  

    你把picturebox1删掉,再加一个picturebox1看看
    2008年8月20日 8:23
    版主
  • 真的順序會不一樣

    除此之外應該沒有了吧 ?

     

    可是用DirectCast

     如果有100各PictureBox

    就要寫100行

    那也沒有精簡程式碼 ??

     

    Thanks

     

     

     

     

     

     

    2008年8月20日 8:27