2016-03-27 16 views
-1

Bunu araştırdım ve sorunu gidermek için herhangi bir yerde başvuru bulamıyorum. Bir metin belgesindeki yaklaşık 20 öğeyi rastgele kodlamak için oluşturdum ve formumdaki bir liste kutusuna koydum. Bu yasal bir dokümandır, bu yüzden bir kez randomize edildiğinde, sadece farklı bir sırayla metin belgesine geri okunacaktır. Her bir öğenin bir başlığı vardır: KABUL TALEPİ NO. # (bu sorudaki her hangi bir sayı olması). Soruların 'şifrelenmiş' olmasına rağmen, bu sayıların numara sırasına (1-20) sahip olmasına ihtiyacım var. Bu çizgiyi, artan bir sayı ile eklemek için bulana kadar çalışmaya devam ettim. Ama onları geriye doğru arttırıyor (redaksiyon örneklerine bakınız). Program output Suçlu dil aşağıdadır. Ben orada yere olduğunu düşünüyorum:Liste Kutusu Ekleme Sorunu

 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 

Not: Ben listesini saygısız tarafından işe başardı. Zarif değil ama işe yarıyor.

  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

sorun bu satırda olabilir: "ListBox1.Items.Count - 1 Adım -1 0 To" ama bunu tersine eğer, yani " 0 to ListBox1.Items.Count - 1 Adım -1 "liste kutusunun her bir listesinden önce istediğiniz gibi liste kutusunun en üstündeki" ADMISSION NO. Için İSTEKLERİ "[1-20] listeler. –

cevap

0
Yorumunuza sağlanan örnek değilse bir sorun için çalışması gerekir

: Step -1

yeni yineleme işlemleri gerçekleştirirken bu gibi çalışır -loop For:

New Value = Current Value + Step 

anlamı, Yaptığınız zaman:

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

yapmaya devam ediyor Current Index + (-1), bu yüzden en tepede bulunurlar; bir adım geri devam edersin.

Bunu düzeltmenin basit yolu, Step 1 olarak değiştirmektir veya Step bölümünü tamamen kaldırmalıdır (varsayılan adım 1, atlanırsa).

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


DÜZENLEME: Bu başlıklara eklerken

ben gerçek sorunu buldum, ben kaçırdım ... açıklamaları zaten vardır. Bu durumda

yapmanız gerekir:

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

Tavsiye ettiğin çizgiyi kullandım - bana "KABUL ETMEMEK İSTEDİĞİNİZİ İSTEDİĞİNİZ 1, İSTEME NO 2 İÇİN İSTEKLERE AŞAĞIDAKİ" 20'ye götürdüm. Daha sonra bu, metin öğelerinin şifreli listesini başlattı. "Adım - 1" ile "Bana ADMISSION No. 20 (bir sonraki satır) İSTENMEK İSTEDİĞİM" 1, "KABUL ETMEK İÇİN TALEPLERİMİZ. 19 (sonraki satır) şifreli metin öğemi 2, vb. 20-1 yerine 1-20 sayıları dışında ihtiyacım olan şey. Yardım edebileceğini düşündüğün her şeyi sana e-postayla gönderebilirim. –

+0

@TareyWolf: Bize diğer öğeleri nasıl eklediğinizi hiç göstermediniz, ancak neden sadece kodumu kullanmıyorsunuz ve "açıklamaları" eklediğinizde, şöyle bir döngü yapmıyoruz: 'For i As Integer = 1 To ListBox1.Items. Adım 2'yi sayın. –

+0

@TareyWolf: E-postaya gerek yok, sadece sorunuzu düzenleyin ve diğer satırları nasıl eklediğinizi gösterin. –