2017-04-21 122 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