Vb.net 在用户表单代码中使用不同的标签

Vb.net 在用户表单代码中使用不同的标签,vb.net,Vb.net,我有一个带有两个用户表单的模拟器,它们在彼此之间来回传输信息(一个是MainForm,另一个是CreatureFinder) 当按下主窗体上的一个牌槽按钮(全部20个对应于你或敌人牌槽中的一个生物)时,它会打开CreatureFinder,以便你可以选择哪个生物进入该牌槽(它还允许你编辑某些参数,如生物的等级) 为简单起见,代码缩短: If CreatureNumberLabel.Text = "1" Then MainForm.YourCreature1Skill1Label.Text

我有一个带有两个用户表单的模拟器,它们在彼此之间来回传输信息(一个是MainForm,另一个是CreatureFinder)

当按下主窗体上的一个牌槽按钮(全部20个对应于你或敌人牌槽中的一个生物)时,它会打开CreatureFinder,以便你可以选择哪个生物进入该牌槽(它还允许你编辑某些参数,如生物的等级)

为简单起见,代码缩短:

If CreatureNumberLabel.Text = "1" Then
   MainForm.YourCreature1Skill1Label.Text = Skill1Label.Text
   MainForm.YourCreature1Skill2Label.Text = Skill2Label.Text
   MainForm.YourCreature1Skill3Label.Text = Skill3Label.Text
End If

我想删除If-Then语句,并将“YourCreature1”更改为“YourCreature1”&CreatureNumberLabel.Text设置为的任何值。

您可以使用某种控制数组。在表单加载时,为控件创建数组并分配其元素(每个数组有20行代码),然后可以像下面一样使用它们:

Dim CreatureNum As Integer = CInt(CreatureNumberLabel.Text)  'don't forget validation
MainFormYourCreatureSkillLabelArray(CreatureNum).Text = SkillLabel(CreatureNum).Text

如果是VBA,您可以跳过

If CreatureNumberLabel.Text = "1" Then
只需键入:

MainForm.Controls("YourCreature" & CreatureNumberLabel.Text & "Skill1Label").Text = Skill1Label.Text

使用
Skill2Label.Text
Skill3Label.Text
,等等。

您可以使用
DirectCast(Me.Controls(“name”)、Label.Text=“您的文本”
只需将名称替换为您想要获取的控件的名称。由于它是一个普通字符串,因此可以与循环中的数字连接。例如,您使用的是VBA还是VB.NET?这适用于VB.NET。不确定VBA是否有效,可能两者都有效?这非常有效!我实际上有一些类似的功能,但不知道我必须放置“控件”部分,所以我一直得到一个错误XD@VisualVincent:它在VBA中确实可以像我写的那样工作。只有在VBA中,您才会使用Label“Capiton”属性而不是“Text”属性。但我只是复制/粘贴并改编了OP的代码段。。。