Помогите с использованием массива для вставки элементов в текстовое поле vb.net

#vb.net #arrays #textbox #listbox

#vb.net #массивы #текстовое поле #listbox

Вопрос:

Я все еще студент без особого опыта использования vb.net и у меня возникли некоторые проблемы с разделением строки внутри массива на 2 значения. Например, в моем текстовом поле у меня есть несколько строк измерений длиной x шириной: 20×14, 10×8, 16×13. Каждое измерение выполняется в отдельной строке. Я пытаюсь разделить все значения ширины, которые больше 12, на 2 отдельных измерения, поэтому в последнем примере у меня было бы 5 измерений (LxW): 20×12, 20×2, 10×8, 16×12, 16×1, затем я хотел бы добавить эти измерения в новое текстовое поле с каждым измерением в отдельной строке.

Вот код, который у меня есть на данный момент. Опять же, я очень новичок в программировании, и это первый серьезный проект для меня со времен «Hello World», так что то, что у меня есть, может быть, не совсем так. Заранее спасибо.

     Dim room As String = RoomsTextBox.Text
    If room.EndsWith(vbCrLf) Then room = room.Substring(0, room.Length - vbCrLf.Length)
    Dim roomarray() As String = room.Split(vbCrLf)
    Dim Cuts(roomarray.Length - 1, 0) As String
    RoomsTextBox.Select(0, 0)

    Dim CutLength As Integer
    Dim CutWidth As Integer
    Dim i As Integer
    Dim j As Integer
    CutsTextBox.Select()

    Cuts(i, j) = (Val(roomarray(i).Split("x")(0))) amp; Val(roomarray(j).Split("x")(1))
    For i = 0 To Cuts.GetUpperBound(0)
        For j = 0 To Cuts.GetUpperBound(1)
            Cuts(i, j) = 0
        Next
        If Val(roomarray(i)) > 12 Then
            CutWidth = Val(roomarray(i)) - 12
            CutLength = Val(roomarray(j))

        Else
            CutWidth = Val(roomarray(i))
            CutLength = Val(roomarray(j))
        End If
        Dim inserttext = CutsTextBox.Text
        Dim insertposition As Integer = CutsTextBox.SelectionStart
        CutsTextBox.Text = CutsTextBox.Text.Insert(0, CutLength.ToString amp; "x" amp; _  
        CutWidth.ToString)
        CutsTextBox.SelectionStart = insertposition   inserttext.Length
    Next i
  

Я даже попробовал это с вставкой измерений в ListBox. Вот код для этого:

     Dim room As String = RoomsTextBox.Text
    Dim roomarray() As String = room.Split(vbCrLf)
    Dim Cuts(roomarray.Length - 1, 0) As String

    Dim CutLength As Integer
    Dim CutWidth As Integer
    Dim i As Integer
    Dim j As Integer
    CutsTextBox.Select()

    Cuts(i, j) = (Val(roomarray(i).Split("x")(0))) amp; Val(roomarray(j).Split("x")(1))
    For i = 0 To Cuts.GetUpperBound(0)
        For j = 0 To Cuts.GetUpperBound(1)
            Cuts(i, j) = 0
        Next
        If Val(roomarray(i)) > 12 Then
            CutWidth = Val(roomarray(i)) - 12
            CutLength = Val(roomarray(j))

        Else
            CutWidth = Val(roomarray(i))
            CutLength = Val(roomarray(j))
        End If
        ListBox1.Items.Add(CutLength.ToString amp; "x" amp; CutWidth.ToString)
    Next i
  

Комментарии:

1. Итак, у вас есть ваши 5 новых измерений, и вы просто застряли на добавлении их в текстовое поле в их отдельной строке, или вы застряли на получении измерений?

Ответ №1:

Попробуйте это.

 Dim dimensions As String() = txtInput.Text.Split(vbCrLf)
    Dim final As New List(Of String)

    For Each item In dimensions
        Dim lw As String() = item.Split("x")

        Dim length As String = lw(0)
        Dim width As Integer = CInt(lw(1))

        If width > 12 Then
            Dim new1 As String
            Dim new2 As String

            new1 = length amp; "x" amp; (width - 12).ToString
            new2 = length amp; "x12"

            final.Add(new1)
            final.Add(new2)

        Else
            final.Add(item)
        End If

    Next

    For Each item In final
        txtOutPut.Text  = item amp; vbCrLf
    Next
  

Комментарии:

1. Спасибо, Джек, это сделало именно то, что я хотел. Я действительно ценю помощь.

2. Извините, только что отметил это как принятый ответ, я новичок на этом сайте и не был уверен, что это значит. Еще раз спасибо