2016-03-27 9 views
-1

Ich habe dies recherchiert und kann nirgendwo eine Referenz finden, um das Problem zu beheben. Ich habe Code erstellt, um etwa 20 Elemente aus einem Textdokument zu randomisieren, und lege sie in ein Listenfeld auf meinem Formular. Dies ist ein rechtliches Dokument, also würde es einmal zufällig in das Textdokument zurückgelesen werden, nur in einer anderen Reihenfolge. Jeder Artikel hat eine Überschrift: ANTRAG AUF EINTRAG NR. # (# ist die Nummer, die in der Zeile steht). Ich brauche diese # in der Reihenfolge der Nummern (1-20), obwohl die Reihenfolge der Fragen verschlüsselt ist. Ich habe weiter daran gearbeitet, bis ich die Zeile mit einer erhöhten Nummer eingefügt habe. Aber es erhöht sie rückwärts (siehe redigiertes Beispiel). Program output Die Schuldige Sprache ist unten. Ich denke, dass es dort irgendwo ist:Listbox-Einfügung Problem

 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 

Hinweis: Ich konnte es durch Umklappen der Liste an der Arbeit. Nicht elegant, aber es funktioniert.

  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

Das Problem könnte in dieser Linie: „ListBox1.Items.Count - 1 bis 0 Schritt -1“, aber wenn ich es umgekehrt, das heißt " 0 bis ListBox1.Items.Count - 1 Schritt -1 "es listet alle" ANTRÄGE FÜR EINTRAG NR. "[1-20] oben in der Listbox statt vor jeder Zeile der Listbox auf, wie gewünscht. –

Antwort

0

Das Beispiel, das Sie in Ihrem Kommentar versehen soll, wenn nicht für ein Problem umgehen: die Step -1

Die For -loop wie dies funktioniert, wenn eine neue Iteration ausführt:

New Value = Current Value + Step 

Bedeutung, Wenn Sie das tun:

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

machen Sie weiter Current Index + (-1), weshalb sie in der Spitze landen; Du gehst einen Schritt zurück.

Der einfache Weg, um dies zu beheben, ist es, es zu Step 1 ändern oder entfernen Sie einfach den Step Teil vollständig (als Standardschritt ist 1, falls weggelassen).

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

EDIT:

Ich glaube, ich Ihre eigentliche Problem sehe, ich es verpasst ... Die Beschreibungen sind bereits da, wenn man diese Header hinzufügen.

In diesem Fall sollten Sie in der Lage zu tun:

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

Ich benutzte die Zeile, die Sie vorgeschlagen haben - es gab mir "Anfragen für den Eingang Nr. 1, Anfragen für den Eingang Nr. 2" usw. bis 20. Dann begann es meine verschlüsselte Liste von Textelementen. Mit dem "Schritt - 1" gibt es mir "ANTRAG AUF ZULASSUNG Nr. 20 (nächste Zeile) meinen verschlüsselten Text 1," ANTRAG AUF EINTRAG NR. 19 (nächste Zeile) mein verschlüsseltes Textelement 2 usw. Was ich brauche außer den Nummern 1-20 statt 20-1. Ich kann die ganze Sache mailen, wenn Sie denken, dass das helfen könnte. –

+0

@TareyWolf: Nun, Sie zeigen uns nie, wie Sie die anderen Elemente einfügen, aber warum verwenden Sie nicht einfach meinen Code und wenn Sie die "Beschreibungen" einfügen, durch: 'Für i As Integer = 1 bis ListBox1.Items. Zähle Schritt 2'. –

+0

@TareyWolf: Keine Notwendigkeit, eine E-Mail, nur bearbeiten Sie Ihre Frage und zeigen Sie mir, wie Sie die anderen Zeilen einfügen. –