2016-03-27 165 views
-1

我已經研究過這個問題,無法在任何地方找到引用來解決問題。我創建了一個代碼來從文本文檔中隨機化大約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) 
+0

問題可能是在這一行:「ListBox1.Items.Count - 1比0步驟-1」,但如果我扭轉它,即「 0 ListBox1.Items.Count - 1步-1「它列出列表框頂部的所有」請求接受號「[1-20],而不是根據需要在列表框的每一行之前。 –

回答

0

您在您的評論提供的例子應該工作,如果不是一個問題:Step -1

For執行新的迭代時-loop是這樣工作的:

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 
+0

我使用了你建議的那一行 - 它給了我「請求接受第1號,請求接受第2號」等等,直到20,然後它開始了我的文本項目的混亂列表。隨着「步驟-1」它給了我「請求接受第20號(下一行)我的炒文本第1項,」請求入場號。 19(下一行)我亂碼的文本項目2等,這是我需要的除了數字是1-20而不是20-1。如果您認爲這可能有幫助,我可以將整件事郵寄給您。 –

+0

@TareyWolf:你永遠不會告訴我們如何插入其他項目,但爲什麼你不使用我的代碼,當你插入「描述」時,循環:'For I As Integer = 1 To ListBox1.Items。計數步驟2'。 –

+0

@TareyWolf:無需發送電子郵件,只需編輯您的問題,並告訴我如何插入其他線。 –