2013-02-02 74 views
0

我來這裏請求如何使我的字符串生成器生成TextBox2中鍵入的字符串數量的幫助。例如,如果我在框中鍵入10,它將在RichTextBox1中生成10個字符串,如果我鍵入1,它將生成1等。這是我的代碼。通過文本框中的數字生成隨機字符串(Visual Basic)

Public Function RandomString(ByVal length As Integer) As String 
    Dim strb As New System.Text.StringBuilder 
    Dim chars() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"} 

    Dim UpperBound As Integer = UBound(chars) 

    For x As Integer = 1 To length 
     strb.Append(chars(Int(Rnd() * UpperBound))) 
    Next 

    Return strb.ToString 

End Function 

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click 
    Try 
     System.Diagnostics.Process.Start("Link Removed...") 
    Catch 
    End Try 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim rndstring As String 
    rndstring = RandomString(24) 
    RichTextBox1.Text = rndstring 
End Sub 

回答

0

你需要做的是修改你的點擊處理程序爲Button1重複的TextBox2指定的次數。但是,您應該驗證用戶是否在文本框中指定了有效的數值。事情是這樣的:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim repeatCnt As Integer 

    'Check for valid numeric entry 
    If Integer.TryParse(TextBox2.Text, repeatCnt) Then 
     For repeatIdx As Integer = 1 To repeatCnt 
      Dim rndstring As String 
      'Generate random string... 
      rndstring = RandomString(24) 
      '...and append to text box with a line break 
      TextBox1.Text &= rndstring & vbCrLf 
     Next 
    Else 
     MessageBox.Show("Please enter a valid integer number in the text box") 
    End If 
End Sub 

一個額外的建議可能是改變用戶指定的重複值的NumericUpDown控件的文本框中。

還要注意的是,對於大的重複值,追加到文本框中Text財產不會有效,因爲串immutability因此,或許另一個StringBuilder將是適當的。

0

您可以使用此方法(基本上它只是一個額外的For -loop):

Private Shared rnd As New Random() 
Private Shared chars() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"} 

Public Shared Function RandomStrings(ByVal length As Int32, count As Int32) As IEnumerable(Of String) 
    Dim builder = New System.Text.StringBuilder() 
    Dim strings = New List(Of String) 
    For c As Int32 = 1 To count 
     For l As Int32 = 1 To length 
      builder.Append(chars(rnd.Next(0, chars.Length))) 
     Next 
     strings.Add(builder.ToString()) 
     builder.Clear() 
    Next 
    Return strings 
End Function 

創建100名隨機的字符串長度爲10:

Dim allStrings = RandomStrings(10, 100)