使用单个代码块编辑多个标签

时间:2013-08-01 05:58:42

标签: vb.net

我想编辑标签的文字。我有一系列名为e1,e2,e3,e4,e5等的标签。我想用一大块代码编辑所有代码,如下所示:

if ta.text = "whatever" then 
e(i).text = ta.text 
endif

在这种情况下,“i”是我将用于选择要编辑的标签的变量。 这是代码示例:

Form2.E(i).Text = em.Text
Form2.P(i).Text = p.Text
Form2.NS(i).Title = t.Text

此代码无效可以有人帮助我吗?

5 个答案:

答案 0 :(得分:2)

试试这个

if ta.text = "whatever" then 
  DirectCast(Me.FindControl("e" & i), Label).Text = ta.text
endif

答案 1 :(得分:0)

这个怎么样......

If ta.text = "whatever" Then 

    CType(Me.Controls("e" & format(i)), Label).Text = ta.text

End If

答案 2 :(得分:0)

Dim myLabel As Label = CType(Me.Controls("e" & i), Label)
myLabel.Text = ...whatever value you want to put here

答案 3 :(得分:0)

假设i是一个整数,并且控件不在另一个控件中,则此代码将起作用:

    If ta.Text = "whatever" Then
        Me.Controls("e" + i.ToString).Text = ta.Text
    End If

如果控件位于另一个控件内,则必须使用控件的名称而不是Me来限定它们。

答案 4 :(得分:0)

我发现做这些事情的最好方法是制作一个专门版本的控件。

专门的LinkedLabel控件的快速示例:

Public Class LinkedLabel
    Inherits Label

    Private _nextLabel As Label

    Public Sub New(nextLabel As Label)
        _nextLabel = nextLabel
    End Sub

    ' Default constructor is still needed for the designer view.
    Public Sub New()
        MyBase.New()
    End Sub

    Protected Overrides Sub OnTextChanged(e As EventArgs)
        MyBase.OnTextChanged(e)
        Debug.Print(Text)
        If _nextLabel IsNot Nothing Then
            _nextLabel.Text = "whatever you want"
        End If
    End Sub

End Class

当您更改LinkedLabel实例上的文字时,它还会更改_nextLabel上的文字(如果已设置)。 nextLabel可以是标准标签,也可以是其他LinkedLabel,后者又可以有另一个链接标签。等等。