回答
控制阵列早已不复存在。面向对象的方法现在是VB的土地法则。
您需要使用某种形式的集合,如list。
VB6中的控制数组完全存在以允许单个事件处理程序用于同一类型的多个控件。
private sub Button_Click(...) Handles Command1.Click, Command2.Click, Command3.Click
end sub
其容易被忽视的控制阵列的另一种隐式特征是数字索引的与阵列的每个元素的关联:
您通过将控制进入Handles
子句为此在VB.NET 。索引可以是任何正整数,只要它们在集合中唯一;他们不必是连续的。因此,数组更像是一个由整数索引的字典,每个项值都是特定控件类型的一个实例。
逻辑在用于控制阵列的VB6事件处理程序获取索引的值与该事件的属性被处理沿着。处理程序中的逻辑通常使用索引来确定哪个控件实例正在引发事件。
.NET事件处理程序有很大不同。您通常会获取对特定控件实例的引用,以及具有要处理的事件属性的特定事件对象的实例。你不会得到索引。
此外,VB6应用程序有时具有将控制数组迭代/操作为数组的逻辑。
在我们默认的翻译,我们尽力支持,明确依赖该控件数组及其索引在传统VB6逻辑。我们将控件数组重写为一组单独的控件实例,然后将它们添加到表单初始化期间的通用OrderDictionary < int,controlType>中。单个控件订阅事件,我们可以使用集合来查找给定控件实例的索引或迭代/操作“数组”中的项目。如果你不明确需要索引或数组,你可以摆脱集合。
动态添加控制是更多的工作现在 - 这是概念性地像将项目添加到所述控制阵列和与VB6(负载对照)单个语句支撑。据我所知,在.NET中,你需要克隆一个控件,明确地复制属性,并明确地连接事件处理程序。它可以用反射和其他中等先进技术进行推广 - 但它肯定不是简单地称为“负载控制”。如果在.NET中有更简单的方法来做到这一点,我很乐意听到它。 FWIW:我们翻译成帮助功能。
有三种创建控制数组的方法。
- 分配相同的名称不止一个控制。
- 复制福音控制并将其过滤到窗体中。
- 将索引正确设置为非空值。
您只能通过代码行事。例如:
Dim c() As TextBox
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim j As Integer
For j = 0 To 10
ReDim Preserve c(j)
c(j) = New TextBox
c(j).Name = "txt" & j
c(j).Parent = Me
c(j).Top = j * c(j).PreferredHeight + 2
c(j).Tag = j
c(j).Visible = True
AddHandler c(j).KeyPress, AddressOf TestKeyPress
Next
End Sub
Public Sub TestKeyPress(source As Object, e As KeyPressEventArgs)
Dim index As Integer
index = CInt(source.tag)
If index >= 5 Then
If e.KeyChar > "9" Or e.KeyChar < "0" Then
e.Handled = True
End If
Else
If e.KeyChar <= "9" And e.KeyChar >= "0" Then
e.Handled = True
End If
End If
End Sub
这将创建11个文本框,分配给所有相同的事件处理程序。
TAG属性用于存储和检索文本框的idex。
- 1. 在Visual Basic 6.0中:创建动态控制数组
- 2. 在Visual Basic 2010中创建ActiveX.DLL
- 3. visual basic 2008控件数组
- 4. Visual basic 2010任务栏组
- 5. 在Visual Basic 2010控件中显示PDF
- 6. Visual basic 2010错误
- 7. Visual Basic 2010/Sub Procedure
- 8. Visual Basic 2010 HMAC SHA1
- 9. 如何在C#2010.NET中创建控件数组?
- 10. 添加到组合框在Visual Basic 2010
- 11. Visual Basic 2010组合框到datagrid
- 12. 如何创建用于Visual Basic 2010的自定义按钮?
- 13. HttpWebRequest,WebBrowser和cookie? (visual basic 2010)
- 14. Visual Basic 2010 HTTP POST请求
- 15. Visual Basic 2010 Html表格
- 16. Visual Basic 2010 Picturebox1.Image ftp upload
- 17. 内连接在Visual Basic 2010
- 18. 二次方程Visual Basic 2010+
- 19. e.CloseReason与Visual Basic 2010 WPF
- 20. Visual Basic 2010快速写入
- 21. 当创建新的SPA控制器时,Visual Studio 2010会冻结
- 22. Visual Basic 2010 Express Express到数据库
- 23. Visual Basic,VBA数组循环
- 24. 在Visual Basic 2010二维数组中提示用户输入
- 25. 是否可以强制Visual Studio 2010使用Visual Basic 10?
- 26. 控制日期格式Visual Basic脚本
- 27. Visual Basic中的接线控制,控制控件
- 28. 创建并在Visual Studio 2010
- 29. 创建数据库问题,Visual Studio 2010
- 30. Visual Basic:如何为DataGridView控件创建LINQ语句?
我不记得,是控制数组,所以你可以动态地添加新的控件到窗体?这是你想要达到的目标吗? – MikeG 2010-09-25 21:22:13