作者Peruheru (还在想)
看板Visual_Basic
标题Re: [.NET] 消失的控制项阵列?
时间Sat Aug 22 11:49:19 2009
※ 引述《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)
1F:→ fumizuki:不推荐自己写程式码实作阵列 因为这是在拖延开发进度 08/22 14:22
2F:→ Peruheru:我只是不晓得其他作法而已XD 08/22 17:34
3F:→ fumizuki:VB6同样可以用Me.Controls("名称")找控制项 08/22 22:33
4F:→ fumizuki:不过当然还是VB6的控制项阵列方便XD 08/22 22:34
5F:→ NTUHacker:感谢Peruheru和板主大人回覆,受用无穷,问题已解^_^ 08/23 18:18
6F:推 mraaa:还可以使用控制项阵列物件阿~~~ 08/24 10:55