我有一系列控件:TextBox,Label和Panel。控件是在代码而不是设计器中动态创建的。我的问题是,如何使用在代码中设置的.Name属性调用Label和Panel控件? 这就是我所拥有的
Public Class frmMain
Private Sub DraControls()
Dim pans as New Panel
With pans
.AutoSize = True
.Parent = Me
.Name = "Panel1"
End With
Dim labs as New Label
With labs
.Text = "%"
.Name = "PercentageLabel00"
.Parent = pans
End With
End Sub
End Class
然后我有一个click事件,它将使标签更改其文本。
Dim PercentTextLabel As Label = CType(Me.Controls("PercentageLabel00"), Label)
PercentTextLabel.Text = "OK"
我需要更改Label的文本,并且出现错误System.NullReferenceException:'对象引用未设置为对象的实例。'
我已经尝试过其他方法,例如Controls.Find
,但是得到的结果相同
谢谢!
答案 0 :(得分:0)
根据评论。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim p As Panel = CType(Me.Controls("Panel1"), Panel)
CType(p.Controls("PercentageLabel00"), Label).Text = "OK"
End Sub
或单行
CType(CType(Me.Controls("Panel1"), Panel).Controls("PercentageLabel00"), Label).Text = "OK"