.NET中的vb6控制数组?

| .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,但是使用该代码,您可以在设计时创建所需的控件,同时将\“ index \”保留为最后一个字符(label1,label2,...,labelN) 稍后,您可以使用循环对其进行迭代,并在眨眼之间添加它们。接下来,您将能够从带有labels(0),labels(1)等的对象中操作它们。 我希望这段代码能够在将来帮助更多的程序员。     

要回复问题请先登录注册