1

这可能是一个非常简单的问题,但我不知道如何表达它。我只会解释我正在尝试做的事情。

我已经制作了一个 PictureBox 网格,并希望在激活时使它们亮起来。它们的范围从picturebox1 到picturebox200,我有一个整数来指定我想要点亮哪个。我将如何处理(在伪代码中):

Dim P as integer = 50

me.pictureboxP.image = my.resources.on

我目前知道的唯一方法是一个巨大的选择案例泥潭。

4

4 回答 4

1

将它们添加到数组中。然后使用索引选择您想要的。

于 2013-05-07T12:39:01.073 回答
0
  1. 将图片框添加到数组中
  2. 将标签属性设置为“打开”图像的 True 和“关闭”图像的 False
  3. 然后选择您的 ON 图片,只需执行以下操作,然后根据需要突出显示它们

     MyArray.Select(function(x) x.Tag = True)
    
于 2013-05-14T10:10:34.557 回答
0

您可以通过使用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)

于 2013-05-07T12:44:10.613 回答
0

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
于 2013-05-07T14:43:38.157 回答