我如何使用与此类似的代码创建多个控件,我一直试图解决这个问题,但不能......
Dim newcontrol as control1 = New control1
Me.groupbox.controls.add(newcontrol)
然后添加处理程序,我想命名像Visual Studio这样的控件,newcontrol1,然后newcontrol2,3等等...我不知道我需要多少这些控件,所以它需要每当需要时添加一个新的。提前谢谢......
编辑我正在尝试在运行时执行此操作,对此感到困惑。
答案 0 :(得分:1)
您无法从字符串变量
创建控件引用Dim strVar As String = "MyControl"
...
For n As Integer = 0 To 3
Dim thisVar As String = strVar &= n.Tostring
thisVar = New NuControl ' already declared as String,
' cant ALSO be NuControl Type!
...
theForm.Controls.Add(thisVar)
Next n
你的代码如何跟踪这些事情? strVar/thisVar
是一个变量,可以更改(变化),以便您快速松开它们。编译器如何知道如何处理它? thisVar = ""
会重置字符串还是销毁控件?
对于动态添加的控件,您通常需要一种方法来跟踪添加的控件,尤其是当您不知道将会有多少时。要在运行时使用相同的代码创建多个用户控件:
Dim btn As Button ' tmp var
Dim myBtns As New List(Of Buttons) ' my tracker
' create 3 buttons:
For n As Integer = 0 To 3
btn = New Button ' create a New button
btn.Top = ...
btn.Left = ... ' set props
btn.Name = "Button" & n.ToString
AddHandler .... ' hook up any event handlers
theForm.Controls.Add(btn) ' add to form
myBtns.Add(btn) ' add to my list
Next n
代码的关键是能够获取我们创建的控件,这是通过对象引用。要禁用我们的按钮:
For n As Integer = 0 to myBtns.Count - 1 ' could be 3, could be 103
myBtns(n).Enabled = False
Next n
请注意,如果你创建的控件也可以动态删除,那么你需要正确处理它们,如果你从表单中删除它们你创造了它们。