2017-04-21 22 views
0

ランダムにリストからテキストボックスを選択し、それらのテキストボックスに1から5の乱数を生成するプログラムを作成しようとしていますが、成功はありません。 Textbox1-Textbox10という名前の10個のテキストボックスと、TxB1という名前の1個のテキストボックスと、1個のボタンがあります。 TxB1では、ランダムに選択されたテキストボックスの数を指定する必要があります。 例:TxB1でユーザが番号4を指定した場合、 がbutton1をクリックした後、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() 

は、二番目の配列をループして同じRandomオブジェクトによって生成された番号に基づいてそのTextを設定するだけです。

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

リストはちょうどFor Eachループの対象になるだろうされている場合でも、最初のコードスニペットでToArray呼び出しを必要はありません。そのためにTakeの結果を使用することができます。

+0

ありがとうございます。私が望むように働いている。 – Suszi

関連する問題