[英]vb6 control arrays in .net?
.Net 是否支持控制数组? 我们正在谈论将旧版应用程序从 VB6 转换为 .NET。 该应用程序有很多控件数组。 如果 .NET 支持控件数组,我读过不同的文章。
如果 .Net 支持像 VB6 这样的控件数组,谁能给我一个明确的答案? 这是 .Net 4.0 的最新版本吗? 还是有版本限制?
另外,如果这是可能的,它是直接转换吗? 如果不是的话,人们必须跳过什么火圈才能实现这一目标?
“直接转换”是不可能的,但您可以以不同的方式创建控件数组:在 Visual Basic .NET 和 Visual C# .NET 中创建控件数组
VB.NET 处理控件数组没有问题。 唯一缺少的是设计师不支持它们。 轻松处理代码。 像这样:
Public Class Form1
Private TextBoxArray() As TextBox
Public Sub New()
InitializeComponent()
TextBoxArray = New TextBox() { TextBox1, TextBox2, TextBox3 }
End Sub
End Class
您可以拥有控件数组,但它们不像 vb6 中的控件数组那样内置。 但是,您可以创建控件数组或具有类似于 vb6 的统一事件处理程序。
我想我找到了解决方案,我不是唯一一个与此限制作斗争的前 VB6 开发人员。 很久以前,我尝试迁移软件,但我失败了,因为它对控制数组有很强的依赖性。 我阅读了很多论坛,我能够编写这个简单的代码:
Public Class Form1
'To declare the List of controls
Dim labels As New List(Of Label)()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'To get all controls in the form
For Each control In Me.Controls
'To search for the specific type that you want to create the array
If control.[GetType]().Name.Contains("Label") Then
'To add the control to the List
labels.Add(DirectCast(control, Label))
End If
Next
'To sort the labels by the ID
labels = labels.OrderBy(Function(x) x.Name).ToList()
End Sub
End Class
出于方便的原因,我使用了 List,但是使用那段代码,您可以在设计时创建所需的控件,同时将“索引”保留为最后一个字符(标签1 、标签2 、...、标签否)
稍后,您可以使用循环迭代它们并在眨眼间添加它们。 接下来,您将能够从带有标签 (0)、标签 (1) 等的对象中操作它们。
我希望这段代码,它会在未来帮助更多的程序员。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.