[.NET] vb動態產生物件修改

看板Visual_Basic作者 (蚵仔)時間11年前 (2013/12/31 16:32), 編輯推噓0(0010)
留言10則, 1人參與, 最新討論串1/1
想請問各位大大,目前小弟有一隻程式是動態產生物件 動態產生物件的方式放在一個sub裡, 然後放一個timer去異動該物件的屬性,但是想不出來 該如何在timer裡去修改sub所產生的物件?(在timer裡不想要異動到全部的,只要異動指定的) 詳細程式碼如下: Public Sub createobj() Dim count as Integer = 10 //設定動態產生的數量 Dim button1(count) As Button //動態產生button For i = 0 To count - 1 button1(i) = New Button //設定button的屬性 With button1(i) .Name = "button1" & i .Image = WindowsApplication1.My.Resources.Resources.machine_s .Width = 144 .Height = 60 .Location = New Point(10, 80) .Enabled = False End With //將動態產生的button放在GroupBox裡 GroupBox(i).Controls.Add(button(i)) Next End Sub //timer Private Sub re_connect_time_Tick(sender As System.Object, e As System.EventArgs) Handles re_connect_time.Tick //想在到數時間到時,去將剛剛createobj()所產生的button屬性中的Enable改為True, 這段不知道怎麼寫? End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.245.121 ※ 編輯: cf1064 來自: 118.163.245.121 (12/31 16:37)

01/01 22:26, , 1F
你不是有個button1陣列 取出他最後一個元素不就是
01/01 22:26, 1F

01/01 22:26, , 2F
最新的button了
01/01 22:26, 2F
可是因為button是動態產生的,所以如果我在re_connect_time_Tick裡 打button1(i).enable=true,會出現錯誤0.0 ※ 編輯: cf1064 來自: 118.163.245.121 (01/02 11:11)

01/02 14:25, , 3F
廢話,那樣打當然是會有錯誤,但是不是因為"button是動
01/02 14:25, 3F

01/02 14:26, , 4F
態產生的",這裡面至少有兩步,但是你連錯誤訊息都不看
01/02 14:26, 4F

01/02 14:26, , 5F
就自作聰明認為因為動態產生所以會錯誤,就隨便吧
01/02 14:26, 5F
好吧,那就隨便吧,我再去藍色小鋪找找好了 ※ 編輯: cf1064 來自: 114.39.165.11 (01/02 20:47)

01/03 03:05, , 6F
你起碼要(1)讓button1在createobj之外也可以存取到
01/03 03:05, 6F

01/03 03:05, , 7F
(2)知道怎樣拿到button1最後一個元素
01/03 03:05, 7F

01/03 03:05, , 8F
或把i也弄成可以在createobj外存取
01/03 03:05, 8F
有想過把button宣告成全域變數, 但是其實button陣列裡面的值是由sql搜尋出來 的總筆數決定並不是固定的,在最上面也只能放宣告而己 ※ 編輯: cf1064 來自: 118.163.245.121 (01/03 10:44)

01/03 15:18, , 9F
VB一向有方法取得某一陣列的目前長度,VB.NET也有
01/03 15:18, 9F

01/03 15:18, , 10F
你可以查一下。應該跟Javascript很類似但有一點差別。
01/03 15:18, 10F
最後是在全域變數中宣告button陣列,不給陣列值,然後在create的function裡 redim該button並給予button陣列值,如此就可以在其他sub裡去設定陣列中的屬性了 ※ 編輯: cf1064 來自: 118.163.245.121 (01/06 10:21)
文章代碼(AID): #1Ime4714 (Visual_Basic)
文章代碼(AID): #1Ime4714 (Visual_Basic)