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