列表框插入问题

时间:2016-03-27 12:54:47

标签: vb.net insert vb.net-2010 listboxitems

我已对此进行了研究,无法在任何地方找到解决问题的参考。我创建了一些代码来从文本文档中随机化大约20个项目,并将它们放入我的表单上的列表框中。这是一份法律文件,因此,一旦随机化,它将以不同的顺序被读回到文本文档中。每个项目都有一个标题:请求入场。 #(#是问题符合的任何数字)。我需要那些#的数字顺序(1-20),尽管问题的顺序是乱码的。我一直在努力,直到我得到它插入该行,增加数字。但它正在向后递增它们(参见编辑示例)。 Program output罪魁祸首语言如下。我认为它就在某个地方:

      ListBox1.BeginUpdate()
            Try
                'do with listBox1.Items[i]
                For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1
                    ListBox1.Items.Insert(i, "REQUEST FOR ADMISSION NO. " & nxtNum & vbCrLf)
                    nxtNum += 1
                Next
            Finally
                ListBox1.EndUpdate()
            End Try

注意:我可以通过翻阅列表来使其工作。不优雅,但它有效。

            ListBox1.BeginUpdate()

            Try
                'do with listBox1.Items[i]

                For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1

                    ListBox1.Items.Insert(i + 1, "REQUEST FOR ADMISSION NO. " & nxtNum & vbCrLf)
                    nxtNum += 1
                Next

            Finally
                ListBox1.EndUpdate()
            End Try

            nxtNum = 1

            Dim items() As Object = ListBox1.Items.Cast(Of Object).Reverse.ToArray
            ListBox1.Items.Clear()
            ListBox1.Items.AddRange(items)

1 个答案:

答案 0 :(得分:0)

如果不是针对一个问题,则您在评论中提供的示例应该有效:Step -1

For - 循环在执行新迭代时的工作方式如下:

New Value = Current Value + Step

意思,当你这样做时:

For i As Integer = 0 To ListBox1.Items.Count - 1 Step -1

你一直在做Current Index + (-1),这就是为什么他们最终排在最前面;你继续前进一步。

解决此问题的简单方法是将其更改为Step 1或完全删除Step部分(默认步骤为1,如果省略)。

For i As Integer = 0 To ListBox1.Items.Count - 1
    ...your code...
Next

修改

我想我看到了你的实际问题,我错过了...当你添加这些标题时,描述已经存在。

在这种情况下,您应该能够:

For i As Integer = 0 To ListBox1.Items.Count - 1 Step 2
    ...your code...
Next