управление массивами vb6 в .net? - PullRequest
4 голосов
/ 21 апреля 2011

Поддерживаются ли массивы управления в .Net? Мы говорим о преобразовании старого приложения из VB6 в .Net. Приложение имеет много массивов управления. Я читал разные статьи, которые отличаются, если .Net поддерживает управляющие массивы.

Может кто-нибудь дать мне однозначный ответ, если .Net поддерживает управляющие массивы, как VB6? Это для последней версии .Net 4.0? Или есть ограничение версии?

Кроме того, если это возможно, это прямое преобразование? Если нет, то через какие горячие обручи придется прыгнуть, чтобы это произошло?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 21 апреля 2011

«Прямое преобразование» невозможно, но вы можете создавать массивы управления другим способом: Создание массивов управления в Visual Basic .NET и Visual C # .NET

2 голосов
/ 21 апреля 2011

VB.NET не имеет проблем с массивами элементов управления.Единственное, чего не хватает, так это того, что дизайнер их не поддерживает.Легко обходится с кодом.Как это:

Public Class Form1
    Private TextBoxArray() As TextBox

    Public Sub New()
        InitializeComponent()
        TextBoxArray = New TextBox() { TextBox1, TextBox2, TextBox3 }
    End Sub

End Class
1 голос
/ 06 марта 2017

Я думаю, что нашел решение, я не единственный бывший разработчик 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 , ..., этикетка N )

Many labels in a window form

Позже вы можете повторять их с помощью цикла и добавлять их в мгновение ока. Далее вы сможете манипулировать ими из объекта с помощью меток (0), меток (1) и т. Д.

Надеюсь, этот кусок кода поможет в будущем большему количеству программистов.

1 голос
/ 21 апреля 2011

Вы можете иметь массивы элементов управления, но они не так встроены, как массивы элементов управления в vb6.Однако вы можете создавать массивы элементов управления или иметь унифицированные обработчики событий, подобные vb6.

...