【发布时间】:2017-07-31 21:39:32
【问题描述】:
VB.net 如何根据特定值创建具有不同类型的控件数组,即文本框、组合框、复选框...
这是代码:
Public Function TestControl(c As Integer())
Dim a As Control()
Dim l As Point
Dim F As New Form
For i As Integer = 0 To c.Length - 1
If c(i) Then
a(i) = New TextBox
Else
a(i) = New ComboBox
End If
a(i).Width = 400
a(i).Height = 40
l.Y = 50 + (3 * i - 2) * a(i).Height / 2
l.X = 150
a(i).Location = l
F.Controls.Add(a(i))
Next
F.Show()
Return Nothing
End Function
当我尝试执行函数时出现以下错误:
变量“a”在被赋值之前被使用。运行时可能会导致空引用异常。
我正在尝试解决它,但我无法成功。 任何想法都会对我很有帮助
谢谢
【问题讨论】:
-
请阅读How to Ask 并使用tour。你为什么要这样做?它们已经在一个或另一个控件集合中。将它们合并为
Control意味着您不会知道哪些具有Checked属性,哪些具有SelectedIndex属性等 -
这就是我想要实现的想法:我在数据集下有不同的数据。每当我想向表中添加行时,我都会调用带有文本框、组合框、复选框的新表单...取决于列的类型...而不是关闭表单时,我将从这些控件获取数据以更新我的表,
-
如果这就是你想要的,是什么让你觉得你做不到?
Dim ctrl As Control()声明了一个数组,该数组将包含任何 Control 对象或从 Control 继承的类。 -
请阅读How to Ask和tour。
-
'For i As Integer = 0 To c.Length - 1 If c(i) Then ctrl(i) = New TextBox Else ctrl(i) = New ComboBox End If ctrl(i).Location = l F.Controls.Add(ctrl(i)) Next' 其中 c 是一个由 0 和 1 组成的数组......当我运行它时,它给了我一个错误,说检查 ctrl 是否不为空
标签: arrays vb.net combobox textbox controls