Re: [.NET] 消失的控制項陣列?
※ 引述《NTUHacker (呼~)》之銘言:
: 最近開始從VB6轉到NET
: 結果google後發現控制項陣列的功能已經消失
: 請問目前是否有解決方案呢?
: 還是只能用for each in controls慢慢找?
: 目前是否無有效方法解決呢?
: 非常感謝您的回覆與指教 m(_ _)m
宣告方法不同罷了
要用控制項陣列
需要從語法來宣告
我知道的做法有2
1.從頭開始宣告
範例(vb的):
Public Class Form1
Private TextBoxArray(9) As TextBox
Private Sub Form1_load(...)
Dim posY As Integer = 0
For count As Integer = 0 To 9
TextBoxArray(count) = New TextBox()
TextBoxArray(count).Location = New Point(5,posY)
posY = posY + 15
TextBoxArray(count).Text = count + 1
Me.Controls.Add(TextBox(count))
Next
End Sub
End Class
這樣子就可以製造出10個從上往下對齊的TextBox陣列
要存取時就使用TextBoxArray(i)來存取第i個就可以了
這做法的缺點是各個控制項的位置只有在執行期間看的到
要調整位置得要自己思考各個控制項的大小、每次應增加的位置偏移量之類
其他屬性皆同,對外觀有特別要求時可能不好調整(見人見智)
優點就是不用一個一個慢慢拉
對於要自動生成的需求可以省去許多一個一個設定的功夫
2.將已存在的控制項製成陣列
假設妳已經在Form1上拉了三個TextBox,名稱都是預設的
TextBox1
TextBox2
TextBox3
像這樣
接著就是寫程式碼的部分
以下同樣是寫在Form1的Class內
Public Class Form1
Private TextBoxArray(2) As TextBox
Private Sub Form1_Load(...)
TextBoxArray(0) = TextBox1
TextBoxArray(1) = TextBox2
TextBoxArray(2) = TextBox3
End Sub
End Class
程式碼就這樣,這樣就可以透過TextBoxArray(i)來存取第i個TextBox控制項了
這樣做得優點是可以用VB習慣的方式來設定各別控制項的屬性,而且效果馬上看得到
不會像從頭宣告那樣只有執行期看得到
缺點就是製作陣列時無法使用迴圈(或許只是我孤陋寡聞不會寫)
得要像 TextBoxArray(0) = TextBox1 這行程式這樣一個一個手動的來設定
如果控制項一多會很麻煩,也容易寫錯(不過VB有程式碼即時偵錯,其實也還好)
但其實這只要做一次就好,之後可以用陣列存取
所以妳不介意的話,這樣寫也好
主要適用於控制項數量不會有更改時
當然妳也可以混著寫
比如說同樣宣告TextBoxArray時,宣告(9)個
但前3個使用方法2來宣告
後7個則使用方法1
這樣也是一種彈性
大概就是這樣吧
有錯請告訴我
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.238.76
※ 編輯: Peruheru 來自: 118.168.238.76 (08/22 11:51)
→
08/22 14:22, , 1F
08/22 14:22, 1F
→
08/22 17:34, , 2F
08/22 17:34, 2F
→
08/22 22:33, , 3F
08/22 22:33, 3F
→
08/22 22:34, , 4F
08/22 22:34, 4F
→
08/23 18:18, , 5F
08/23 18:18, 5F
推
08/24 10:55, , 6F
08/24 10:55, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):