2014-01-16 90 views
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() 

開放的建議如何更好地做到這一點/以一種實際上正常工作的方式。

+0

嘗試在循環外聲明'rnd'一次。有可能是用相同的種子進行聲明,因此每次都會返回相同的值。 – tinstaafl

+0

Rnd正常工作,每個圖片框正在創建不同的隨機座標。我一定要檢查一下。當我在調試模式下遍歷它時,代碼工作正常。 – pvdev

+2

這種差異可能是因爲自動種子的基礎,我相信,在一天的時間。當你在VS之外運行時,它的運行速度會更快,這可能意味着調試將顯示你獲得了不同的數字,但發佈的版本獲得相同的數字。無論哪種方式,在循環外聲明一個Random對象通常會更有意義,並且是一個非常簡單而容易測試的事情。 – tinstaafl

回答

1

不得不在循環外聲明RND對象。謝謝tinstaafl!

相關問題