这可能是一个非常简单的问题,但我不知道如何表达它。我只会解释我正在尝试做的事情。
我已经制作了一个 PictureBox 网格,并希望在激活时使它们亮起来。它们的范围从picturebox1 到picturebox200,我有一个整数来指定我想要点亮哪个。我将如何处理(在伪代码中):
Dim P as integer = 50
me.pictureboxP.image = my.resources.on
我目前知道的唯一方法是一个巨大的选择案例泥潭。
这可能是一个非常简单的问题,但我不知道如何表达它。我只会解释我正在尝试做的事情。
我已经制作了一个 PictureBox 网格,并希望在激活时使它们亮起来。它们的范围从picturebox1 到picturebox200,我有一个整数来指定我想要点亮哪个。我将如何处理(在伪代码中):
Dim P as integer = 50
me.pictureboxP.image = my.resources.on
我目前知道的唯一方法是一个巨大的选择案例泥潭。
将它们添加到数组中。然后使用索引选择您想要的。
然后选择您的 ON 图片,只需执行以下操作,然后根据需要突出显示它们
MyArray.Select(function(x) x.Tag = True)
您可以通过使用Form的Controls.Find方法来执行此操作。像下面这样的东西应该可以工作:
Dim p as Integer = 50
Dim pic as PictureBox = Me.Controls.Find("picturebox" + p.ToString, True)
If Not pic Is Nothing Then
pic.Image = My.Resources.Icon
End If
另请参阅此问题:如何按名称引用 Windows 窗体控件(C#/VB)
Controls.Find() 返回一个控制数组,即使只有一个匹配项。因此,您需要使用 Array 的 Length 检查任何返回值,然后将返回的控件转换为所需的类型:
Dim p as Integer = 50
Dim matches() As Control = Me.Controls.Find("picturebox" + p.ToString, True)
If matches.Length > 0 AndAlso TypeOf matches(0) Is PictureBox Then
Dim pic as PictureBox = DirectCast(matches(0), PictureBox)
pic.Image = My.Resources.Icon
End If