【问题标题】:How do I get data to start entering in second listbox after first listbox has 7 numbers?在第一个列表框有 7 个数字后,如何让数据开始输入第二个列表框?
【发布时间】:2019-02-19 18:31:36
【问题描述】:

所以我一直在处理这个表格,我有三个不同的员工,我应该输入大约 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

这个总是出现未处理的异常无法将字符串转换为双精度?

所以不知道那里发生了什么。

还有什么建议吗?

【问题讨论】:

  • Employee1 变量是什么?为什么总是向学生插入相同的文本框?为什么要尝试在需要数字的位置插入字符串?字符串“1”不是数字1。看看VB.NET中的Option Strict是什么
  • 输入文本框是相同的,这就是为什么我遇到问题的原因我有一个用于所有三名员工的输入文本框,变量输出为整数

标签: vb.net winforms


【解决方案1】:

既然你已经澄清了你的问题,我已经更改了下面的代码并将旧代码留在那里以防万一。

我们使用 CurrentListbox 来跟踪哪个列表框是当前列表框。

您可以只计算输入了多少值,然后除以 7 来查看要填充哪个列表框或列表框本身的 ID/名称,我们只是使用了一个简单的数字。

按钮点击下面的循环需要用逗号分隔的 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

【讨论】:

  • 嗯,我把它放在我的代码中,但似乎仍然不起作用,顶部的 listbox.clear 东西不起作用,它也只接受数据到第一个列表框
  • 您需要将列表框的名称更改为与您在应用程序中使用的名称相同的名称。像 EmployeeListbox1、EmployeeListbox2、EmployeeListbox3 和 InputTextbox。
  • 对不起,我忘了添加项目所以它应该是 Listbox1.ITEMS.Clear
  • 好吧,那部分确实有效,但它仍然没有移动到第二个文本框...
  • 那么你有多少个文本框?我以为只有一个,当您编写文本框时,您的意思是列表框,因为您的标题说明了列表框。
猜你喜欢
  • 2019-04-30
  • 2022-09-22
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2019-05-11
  • 2022-07-05
  • 2021-08-09
  • 1970-01-01
相关资源
最近更新 更多