使用Name属性

时间:2019-03-22 05:05:53

标签: vb.net

我有一系列控件: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,但是得到的结果相同

谢谢!

1 个答案:

答案 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"