1
因此,我写了一小段代码将6个图片框添加到随机位置的表单中。它将每个picturebox添加到一个集合中,然后遍历集合并将它们添加到表单控件中。奇怪的问题是,只有在调试模式下逐行执行代码时,代码才能正常工作。如果我只编译并运行代码,那么只有1个图片框被添加到表单中,但是如果我逐行逐行浏览代码,那么所有6个图片框都会成功添加到随机位置的表单中。有谁能告诉我为什么会发生这样的事情?这让我变得非常坚果。代码如下:在vb.net中以编程方式添加多个图片框
For i As Integer = 0 To 5
Dim pic As New PictureBox
Dim rnd As New Random
pic.Location = New Point(rnd.Next(200, 300), rnd.Next(200, 300))
pic.Size = New Size(5, 5)
pic.BackColor = Color.White
pic.Visible = True
pic.BringToFront()
_picCollection.Add(pic)
Next
For Each item As PictureBox In _picCollection
Controls.Add(item)
Next
ShowDialog()
开放的建议如何更好地做到这一点/以一种实际上正常工作的方式。
尝试在循环外声明'rnd'一次。有可能是用相同的种子进行声明,因此每次都会返回相同的值。 – tinstaafl
Rnd正常工作,每个图片框正在创建不同的随机坐标。我一定要检查一下。当我在调试模式下遍历它时,代码工作正常。 – pvdev
这种差异可能是因为自动种子的基础,我相信,在一天的时间。当你在VS之外运行时,它的运行速度会更快,这可能意味着调试将显示你获得了不同的数字,但发布的版本获得相同的数字。无论哪种方式,在循环外声明一个Random对象通常会更有意义,并且是一个非常简单而容易测试的事情。 – tinstaafl