Как я могу получить данные для начала ввода во второй список после того, как первый список имеет 7 номеров? - PullRequest
0 голосов
/ 19 февраля 2019

Итак, я работал над этой формой, где у меня есть три разных сотрудника, и я должен входить в отгруженные единицы в течение примерно 7 дней (так что должно быть 7 номеров) Теперь, после того как я получу все 7 номеров дляпервый список, который я использую, мне нужен, чтобы начать вводить данные во второе текстовое поле, получить там 7 цифр и затем перейти к третьему текстовому полю, у меня нет проблем с получением цифр в первом текстовом поле, но я не могу их получитьпереключитесь на второе текстовое поле после ввода чисел.

Есть идеи?

Private Sub EnterButton_Click(sender As Object, e As EventArgs) Handles EnterButton.Click
     Dim output As Integer
    If Integer.TryParse(InputTextbox.Text, output) Then
            If InputTextbox.Text >= 0 AndAlso InputTextbox.Text <= 1000 Then
                Employee1.Add(InputTextbox.Text)
                EmployeeListbox1.DataSource = Nothing
                EmployeeListbox1.DataSource = Employee1
                InputTextbox.Clear()
            End If
        End If

Это мой код ^

До сих пор я пытался сохранить данные в массиве, чтобы

Dim students(6) As Integer

  students(0) = "" &inputtextbox.Text
  students(1) = "" &inputtextbox.Text
  students(2) = "" &inputtextbox.Text
  students(3) = "" &inputtextbox.Text
  students(4) = "" &inputtextbox.Text
  students(5) = "" &inputtextbox.Text
  students(6) = "" &inputtextbox.Text

Даже не уверен, что это правильно, потому что я пытаюсь получить число из текстового поля, в любом случае, я пытался, что я также пытался

        If Employee1.Count = 7 Then
        If InputTextbox.Text >= 0 AndAlso InputTextbox.Text <= 1000 Then
            Employee2.Add(InputTextbox.Text)
            EmployeeListbox2.DataSource = Nothing
            EmployeeListbox2.DataSource = Employee1
            InputTextbox.Clear()
        End If
    End If

Этот продолжает появляться с необработанным исключением, не может преобразовать строку в удвоение?

Так что не знаете, что там происходит.

В любом случае, есть предложения?

1 Ответ

0 голосов
/ 19 февраля 2019

Поскольку вы уточнили свой вопрос, я изменил приведенный ниже код и оставил старый код на случай, если это поможет.

Мы используем CurrentListbox , чтобы отслеживать, какой списоктекущий.

Вы можете просто посчитать, сколько значений вводится, а затем разделить на 7, чтобы увидеть, какой список нужно заполнить или идентификатор / имя самого списка, мы просто использовали простое число.

Цикл ниже при нажатии кнопки ожидает 7 значений, разделенных запятыми.

Если значений меньше 7, при следующем вводе значений они начнут заполнять последний список, начиная с начала снова.

Если их больше 7, с дополнительными значениями ничего не поделаешь.

Class MyForm

    Dim CurrentListbox as Integer

    Sub Form_Load()
        '
        CurrentListbox = 1
        Listbox1.Items.Clear
        Listbox2.Items.Clear
        Listbox3.Items.Clear
        '
    End Sub

    Sub Button_Click()
        '
        Dim DataArray As String()
        Dim CountA As Integer
        '
        DataArray = Split(Textbox1.Text, ",")
        For CountA = 1 To DataArray.Count 
            If Counta >= 1 And Counter =< 7 Then
                Select Case CurrentListbox
                    Case "Listbox1"
                        ListBox1.Items.Add(DataArray(CountA-1))

                    Case "Listbox2"
                        ListBox2.Items.Add(DataArray(CountA-1))

                    Case "Listbox3"
                        ListBox3.Items.Add(DataArray(CountA-1))

                End Select

            ElseIf CountA = 7 Then
                'change to next listbox if not the last one
                If CurrentListbox < 4 Then
                    CurrentListbox = CurrentListbox + 1
                Else
                    ' last one - no more listboxes
                End If
                Exit For
            End If
        Next
        Textbox1.Text = ""
        '
    End Sub
    '
End Class

СТАРЫЙ ОТВЕТ

Вы можете использовать функцию SPLIT для разделения текста стекстовое поле в массив отдельных значений.

каждое значение в вашем текстовом поле может быть разделено запятой (или пробелом или чем-либо еще, что вы хотите использовать в качестве разделителя).

Затем вы настраиваете цикл по массиву отдельных значений, добавляя каждое из них в списки, основываясь на том, сколько значений вы ввели в текстовое поле.

Dim DataArray As String()
Dim CountA As Integer
'
Listbox1.Items.Clear
Listbox2.Items.Clear
Listbox3.Items.Clear
'DataArray = Split("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21", ",")
DataArray = Split(Textbox1.Text, ",")
For CountA = 0 To DataArray.Count - 1
  Select Case CountA

    Case 0 To 6
      ListBox1.Items.Add(DataArray(CountA))

    Case 7 To 13
      ListBox2.Items.Add(DataArray(CountA))

    Case 14 To 20
      ListBox3.Items.Add(DataArray(CountA))

  End Select
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...