我使用标签1标签75是否可以更改标签名称?示例而不是label7我想将标签名称重命名为label3,解决方案是什么?
答案 0 :(得分:1)
它在表单中工作,因为你正在调用Controls
,这意味着Me.Controls
,它是我(你的表单)内部的控件集合。将标签放在面板中后,标签不再位于窗体的控件集合中,而是面板的控件集合中。这是因为Controls
不会比调用它的控件更深。你可以做到这一点,这将解决你当前的问题:
' replace Panel1 with the name of your panel
Dim lbl As Label = Panel1.Controls("Label" & Data)
ReceivedFrame = ReceivedFrame + 1
lbl.Text = ReceivedFrame
但如果标签移出面板,则会中断。下面的解决方案在处理能力方面要贵一些,但我在任何地方都使用它,这不是一个问题。
在项目中创建一个新的类文件,并将此代码放入其中。
Public Module Support
<Extension()> _
Public Function ChildControls(Of T As Control)(ByVal parent As Control) As List(Of T)
Dim result As New List(Of Control)
For Each ctrl As Control In parent.Controls
If TypeOf ctrl Is T Then result.Add(ctrl)
result.AddRange(ctrl.ChildControls(Of T)())
Next
Return result.ToArray().Select(Of T)(Function(arg1) CType(arg1, T)).ToList()
End Function
<Extension()> _
Public Function ControlByName(ByVal parent As Control, ByVal name As String) As Control
For Each c As Control In parent.ChildControls
If c.Name = name Then
Return c
End If
Next
Return Nothing
End Function
End Module
它使您可以获得控件内的所有控件,包括表单。然后按名称获得所需的控件。
然后你可以这样称呼它:
Dim lbl As Label = Me.ControlByName("Label" & Data)
ReceivedFrame = ReceivedFrame + 1
lbl.Text = ReceivedFrame
只要控件位于表单中的某个位置,任何容器中或其他容器中的任何容器中,这都可以正常工作。
答案 1 :(得分:0)
Dim lbl As New Label
lbl.Parent = Panel1
lbl.Text = "Your string"
答案 2 :(得分:0)
您可以直接通过Label Control的Name Property调用它可以驻留在表单上的内容。如果Label Control位于面板上且其名称为 Label1 ,则要显示一个值,您可以通过编程方式将其称为 Label1.Text =“您的字符串值”。
如果要通过对象访问Label Control的属性,那么
Dim lbl As Label = CType(Label1, Label)
lbl.Text ="Your String Value"
HTH
答案 3 :(得分:0)
这是一个很好的代码,他写了@Verdolino,但是有点儿小车,因为如果你的控件嵌套在一个嵌套的组合框内,它仍然嵌套在其他控件中,它会破坏。
但这是一种很好的方式。 这是一个递归函数,它将调查结束 嵌套控件。
Function GetControl(OwnerControl as Control,FindControlName as string) as Control
If OwnerControl.Controls.Count > 0 Then
'//===>It will loop in each control of the control container.
For Each iControl as Control in OwnerControl.Control
GetControl(OwnerControl ,FindControlName)
Next
Else
'//===>this code is when the control is not a container and will check if the name macth
If OwnerControl.Name.ToUpper = FindControlName.ToUpper Then
'//===>TODO HERE:Add here any code if the control was found
' you can register some events handler if you want
' AddHandler OwnerControl.Click, AddressOf _MyClickEventSub
Return OwnerControl
End If
End If
End Sub
dim txtControl as control = GetControl(Me,"txtName")
If not txtControl Is Nothing Then
'//===>TODO HERE:if the control was found
End Sub