0

我来这里寻求有关如何使我的字符串生成器生成在 TextBox2 中键入的字符串数量的帮助。例如,如果我在框中键入 10,它将在 RichTextBox1 中生成 10 个字符串,如果我键入 1,它将生成 1,依此类推。这是我的代码。

 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
4

2 回答 2

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由于字符串的不可变性,附加到文本框属性的效率不高,因此也许另一个StringBuilder是合适的。

于 2013-02-02T01:05:47.390 回答
0

你可以使用这个方法(基本上它只是一个额外的For循环):

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)
于 2013-02-02T01:05:55.607 回答