2016-08-07 5 views
2

Итак, я пытаюсь добавить элементы в массив и затем возвращать все элементы в массиве в текстовое поле. Может ли кто-нибудь сказать мне, что я делаю неправильно? Когда я нажимаю кнопку, это приводит к ошибкам, или я получаю system.string[] или он не отображает все элементы, только один полный или частичный элемент. edit1: вот обновленный код.Отображение содержимого массива в текстовом поле

Public Class Form1 
    Dim x As Integer = 0 
    Dim strencode As String 
    Dim strletters As String 
    Dim strholder(0 To 999) As String 


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     strletters = TextBox1.Text 
     Label2.Text = x.ToString 
     If TextBox1.TextLength < x Then 
      x = 0 

     End If 


     If TextBox1.TextLength <> 0 Then 
      If TextBox1.TextLength < x Then 
       x = 0 
      End If 



      Do Until x = TextBox1.TextLength 
       If TextBox1.TextLength < x Then 
        x = 0 
       End If 
       If TextBox1.TextLength <> 0 Then 
        If strletters.Substring(x, 1) = "A" Then 
         strholder(x) = "346," 
         x = x + 1 
        ElseIf strletters.Substring(x, 1) = "B" Then 
         strholder(x) = "917," 
         x = x + 1 
        End If 




       End If 
      Loop 


pause: 





      Dim i As Integer 
      For i = 0 To (x - 1) 
       TextBox2.Text = (strholder(i)) 
      Next 

     End If 
    End Sub 

End Class 
+0

Какое сообщение об ошибке в какой строке кода? – dbmitch

+0

Вы должны добавить, какое исходное «состояние»/окончательное «состояние» вы ожидаете/должны позволить нам понять, чего вы пытаетесь достичь (как функциональность/поведение), а не то, что должен делать код. – Sehnsucht

+0

Обновите эту строку до: TextBox2.Text & = strholder (i) – EJD

ответ

0

Do Until Ваш блок будет продолжаться до бесконечности, если у вас есть какие-либо письмо, отличное от «A» и «B» в вашей strletters строке. Обязательно всегда увеличиваем значение х:

Do Until x = TextBox1.TextLength 
    ' Some conditions 
    ' Some more conditions   
    x = x + 1 ' Increment regardless 
Loop 

Кроме того, вы можете легко сцепить выход вашего strholder массива с помощью String.Join:

TextBox2.Text = String.Join(String.Empty, strholder) 

Update:

Вот фрагмент кода с несколько других методов ...

Public Class Form1 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     ' Converting a string to a char array 
     Dim charArray() As Char = TextBox1.Text.ToCharArray 
     ' Converting a string to a string array 
     Dim stringArray() As String = TextBox1.Text.Select(Function(c) c.ToString).ToArray 

     ' Concatenate using a For Each loop 
     For Each ch In charArray ' or stringArray 
      ' do something with each ch... 
      TextBox2.Text &= ch ' Concatenate using the & operator 
      'TextBox2.Text += ch ' Concatenate using the + operator 
     Next 

     ' Converting a char array back to a string 
     TextBox2.Text = String.Join(String.Empty, charArray) 
     ' Converting a string array back to a string, method 1 
     TextBox2.Text = String.Join(String.Empty, stringArray) 
     ' Converting a string array back to a string, method 2 
     TextBox2.Text = stringArray.Aggregate(Function(final, sCh) final & sCh) 

     ' In your case you could just simply... 
     TextBox2.Text = TextBox1.Text.Replace("A"c, "346,").Replace("B"c, "917,") 
    End Sub 
End Class 

As для выбора оператора конкатенации вы можете посмотреть на this

Смежные вопросы