.Net中是否支持控件数组?我们正在谈论将遗留应用程序从VB6转换为.Net。该应用程序有很多控制数组。如果.Net支持控制数组,我已经阅读了不同的文章。
如果.Net支持像VB6这样的控制数组,那么有人能给我一个明确的答案吗?这是最新版本的.Net 4.0吗?或者是否有版本限制?
另外,如果这可能是直接转换?如果不是,为了实现这一目标,人们必须跳过什么火焰箍?
谢谢!
答案 0 :(得分:2)
无法进行“直接转换”,但您可以采用不同的方式创建控件数组:Creating Control Arrays in Visual Basic .NET and Visual C# .NET
答案 1 :(得分:2)
VB.NET对控件数组没有任何问题。唯一缺少的是设计师不支持它们。轻松解决代码问题。像这样:
Public Class Form1
Private TextBoxArray() As TextBox
Public Sub New()
InitializeComponent()
TextBoxArray = New TextBox() { TextBox1, TextBox2, TextBox3 }
End Sub
End Class
答案 2 :(得分:1)
您可以拥有控件数组,但它们不像vb6中的控件数组那样内置。但是,您可以创建控件数组或具有类似于vb6的统一事件处理程序。
答案 3 :(得分:1)
我认为我找到了解决方案,我不是唯一一位挣扎于此限制的前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”保留为最后一个字符(标签 1 ,标签 2 ,...,标签 N )
稍后,您可以使用循环迭代它们并在眨眼间添加它们。接下来,您将能够使用标签(0),标签(1)等从对象中操作它们。
我希望这段代码,它将来会帮助更多的程序员。