首页 > 解决方案 > 随机化图像将进入的图片框

问题描述

我对视觉基础非常陌生,想知道如何将图像放入随机图片框中。我有 4 个图片框和一张图片。当您单击“Jouer”按钮时,我希望图像出现在计算机选择的图片框中。提前致谢。这是我到目前为止尝试过的代码:

   Private Sub btnJouer_Click(sender As Object, e As EventArgs) Handles btnJouer.Click
    T(0) = PictureBox1
    T(1) = PictureBox2
    T(2) = PictureBox3
    T(3) = PictureBox4

    lbl1.Text = lbl1.Text - 1

    Dim rand As New Random()
    For i = 0 To 3
        Randomize()
        Image = My.Resources.mario1
        Trouver = Image.ToString
        Trouver = rand.Next(0, T.Count)
    Next

  End Sub

标签: vb.net

解决方案


通过对四个 PictureBox 进行一些硬编码,只需使用 Case 语句即可完成

Dim rand As New Random()
Dim image = My.Resources.mario1
Dim i = rand.Next(4) ' 0, 1, 2, 3
Select Case i
    Case 0
        PictureBox1.Image = image
    Case 1
        PictureBox2.Image = image
    Case 2
        PictureBox3.Image = image
    Case 3
        PictureBox4.Image = image
End Select

Randomize 旨在与旧式 vb.net Rnd 函数一起使用,而 Random 类不需要它。

无需硬编码四个 PictureBox,您可以指定 PictureBox 的数量和名称中的前缀

Dim rand As New Random()
Dim image = My.Resources.mario1
Dim i = rand.Next(4) ' 0, 1, 2, 3

Dim numberOfPictureBoxes = 4
Dim pictureBoxPrefix = "PictureBox"

Dim myPictureBox = DirectCast(Me.Controls.Find($"{pictureBoxPrefix}{i + 1}", True).Single(), PictureBox)
myPictureBox.Image = image

当然,你可能想在设置一个之前清除所有的PictureBoxes,所以它们都被清除了。您可以使用 Me.Controls,但 PictureBoxes 必须在表单中,而不是在不同的控件中,例如 Panel 或 GroupBox。如果是这种情况,请改用该容器:container.Controls.Cast(Of Control...

Dim myPictureBoxes = Me.Controls.Cast(Of Control).Where(Function(c) c.Name.Contains(pictureBoxPrefix)).Cast(Of PictureBox)()

For Each pb In myPictureBoxes
    pb.Image = Nothing
Next

推荐阅读