2017-04-21 171 views
0

我試圖創建一個程序,它隨機選擇列表中的文本框,並在這些文本框中生成從1到5的隨機數,但是沒有成功。我有10個名爲Textbox1- Textbox10的文本框,1個名爲TxB1的文本框和1個按鈕。在TxB1中,用戶應該指定在隨機文本框中選擇的數量。 例如:用戶在TxB1中指定了數字4, 已經點擊了按鈕1,然後從1到5的數字應該出現在隨機選擇的4個不同的文本框中。 這裏是我沒有運氣嘗試過的代碼......生成隨機文本框顯示隨機數

Dim rn As New Random 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

      Dim index2 As Integer = rn.Next(1, TxB1.Text) 
      Dim MyListOfTextBoxes() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10} 
      For index = 0 To 9 
       Dim RandomNumberAHigh As Integer = 10 
       Dim RandomNumberALow As Integer = 1 
       Dim Random As Integer = 0 

       For i As Integer = 0 To index2 
        MyListOfTextBoxes(index2).Text = Int((RandomNumberAHigh - RandomNumberALow + 1) * Rnd() + RandomNumberALow) 
       Next 
      Next 
     End Sub 
+1

你可能想澄清你正在嘗試做什麼 - 這聽起來像你想把一個數字(而不是隨機數)範圍放入隨機文本框(它不是動態生成的)。然後打開'Option Strict',並且不要依賴運氣來使代碼工作。 – Plutonix

+0

謝謝你的建議。 – Suszi

回答

0

如果你想使一些從列表中唯一的,隨機的選擇的話,只要在列表不是太大,我會建議隨機排列列表,然後從該列表的開頭取適當數量的項目。在你的情況:

Dim rng As New Random 
Dim allTextBoxes = {TextBox1, TextBox2, ..., TextBox10} 
Dim selectedTextBoxes = allTextBoxes.OrderBy(Function(tb) rng.NextDouble()). 
            Take(numberOfTextBoxes). 
            ToArray() 

顯示每一個隨機數,不只是一個通過所述第二陣列循環和設定的事項的Text基於由同一Random對象生成的數字。

For Each tb In selectedTextBoxes 
    tb.Text = rng.Next(1, 6).ToString() 
Next 

注意,你甚至都不需要ToArray呼叫在第一代碼片段如果列表只是將是一個For Each環的主題。 Take的結果可用於此。

+0

謝謝。它像我想要的那樣工作。 – Suszi