我知道我的答案已经很晚了,但我想我找到了解决方案。我不是唯一一个与 VS 的这种限制作斗争的前 VB6 开发人员。很久以前,我尝试迁移我设计的 CRM,但我失败了,因为我对控制数组有很强的依赖(数百个在一种形式中)。我阅读了很多论坛,并且能够编写这个简单的代码:
VB.NET:
'To declare the List of controls
Private textBoxes As List(Of TextBox) = New List(Of TextBox)()
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
'To get all controls in the form
For Each control In Controls
'To search for the specific type that you want to create the array
If control.[GetType]() = GetType(TextBox) Then
textBoxes.Add(CType(control, TextBox))
End If
Next
'To sort the labels by the ID
textBoxes = textBoxes.OrderBy(Function(x) x.Name).ToList()
End Sub
C#:
//To declare the List of controls
private List<TextBox> textBoxes = new List<TextBox>();
private void Form1_Load(object sender, EventArgs e)
{
//To get all controls in the form
foreach (var control in Controls)
{
//To search for the specific type that you want to create the array
if (control.GetType() == typeof(TextBox))
{
//To add the control to the List
textBoxes.Add((TextBox)control);
}
}
//To sort the labels by the ID
textBoxes = textBoxes.OrderBy(x => x.Name).ToList();
}
有3点需要考虑:
- A
List
将帮助您模拟大量控件。
typeof(Control)
将帮助您定义要添加到列表中的控件类型。
- 当您将“索引”保留为最后一个字符(textBox 1、 textBox 2、...、textBox N)时,您可以创建逻辑顺序。
设计模式示例:
跑步:
在我看来,类似的逻辑可能会在 WPF、ASP.NET(Web 窗体)或 Xamarin(窗体)等其他技术中使用。我希望这段代码将来能帮助更多的程序员。